Differenz zwischen Klasse und Struktur Unterschied zwischen
Bevor wir den Unterschied zwischen Klasse und Struktur verstehen, sollten wir einige grundlegende Konzepte kennen, die mit ihnen verbunden sind. Ohne ein Verständnis von Konzepten ist es schwierig, die Unterschiede zwischen den beiden zu verstehen.
Was ist Klasse und Objekt:
Dies sind die beiden wichtigen Konzepte für die objektorientierte Programmierung. Sie bilden die Grundlage für das Framing der Funktionen und Daten, die an andere Funktionen übergeben werden. Zum besseren Verständnis können wir sie einem realen Beispiel zuordnen. Eine Klasse kann als Geschäft betrachtet werden, und ein Objekt kann jedes einzelne spezifische Geschäft sein, wie Lebensmittel, Schreibwaren, Obst usw. Alle Objekte teilen die gemeinsamen Eigenschaften der Hauptklasse - das Geschäft - und wiederum die Objekte können ihre eigenen exklusiven Eigenschaften haben, wie ein bestimmtes Design, eine Beleuchtung usw. Durch die Objekte können wir tatsächlich die Klasse verwenden; Sie bilden die Instanzen einer Klasse.
Syntax einer Klasse
Klassenspeicher {
public string things;
public string design;
}
Syntax eines Objekts
Store Lebensmittelgeschäft = neuer Store ();
Store Stationery = neuer Store ();
Was ist eine Struktur?
Ein Struct enthält nur die Daten, und daher ist es hilfreich, die einzelnen Datenanforderungen über die Struct-Objekte zu definieren. Im Gegensatz zu einer Klasse fehlen ihm Funktionen. Hier ist seine Syntax:
struct Lebensmittelgeschäft_Entwicklung {
char Eingangsname [50];
int Eingangsgröße;
} Lebensmitteleintritt;
Alle Geschäfte können den 'Eingang' des Struct mit individuellen Namen und Größen verwenden.
Was ist Vererbung?
Es ist ähnlich, wie ein Sohn die Besitztümer seines Vaters erbt, und der Sohn wiederum kann auch andere Besitztümer hinzufügen. Die Klasse kann entweder eine Basisklasse oder eine abgeleitete Klasse sein, wobei die erstere als Basis für die letztgenannte Klasse dienen kann. Die abgeleitete Klasse fügt abgesehen von dem, was sie von der Basisklasse erhält, nur wenige andere Eigenschaften für sich selbst hinzu. Wenn wir das obige Beispiel betrachten, kann das Gemischtwarenladen noch zu einem bestimmten Gemischtwarenladen wie XYZ Gemischtwarenladen abgeleitet werden.
Nun, da wir mit den grundlegenden Konzepten vertraut sind, können wir auf den tatsächlichen Unterschied zwischen Klasse und Struktur eingehen.
Wie unterscheiden sie sich?
- Wiederverwendbarkeit: Da Klassen das Grundgerüst bilden, können sie wiederverwendet werden; Strukturen sind jedoch einzelne Elemente mit bestimmten Eigenschaften, so dass sie nicht wiederverwendet werden können. Zum Beispiel kann die Lebensmittelgeschäft Klasse für jede Art von Lebensmittelgeschäft verwendet werden, aber die Struct Lebensmittelgeschäft_Eintritt ist nur für diese allein und es gibt keinen Sinn, es in anderen Klassen zu verwenden.
- Sichtbarkeit: Alle Funktionen einer Klasse sind für ihre Objekte öffentlich verfügbar.Zum Beispiel haben wir eine Funktion namens "Dinge" unter der Klasse "Geschäft". Die Funktion "Dinge" ist für alle ihre Objekte sichtbar, wie zum Beispiel "Lebensmittelladen", "Schreibwarengeschäft" usw. Eine solche Sichtbarkeit ist mit Structs nicht möglich, da die Daten von struct auf sich selbst beschränkt und für andere Structs nicht sichtbar sind. Um die Dinge klarzustellen, können wir sagen, dass die Daten von "Lebensmittelgeschäft" für alle anderen Geschäfte nicht öffentlich sichtbar sind.
- An Referenz übergeben und an Wert übergeben: An Referenz übergeben sendet nur den Speicherort und nicht die tatsächlichen Daten an die Funktionen. Dies bedeutet, dass sich die Änderung bei jeder Änderung des Werts in den entsprechenden Funktionen widerspiegelt. Übergeben nach Wert sendet der Wert einfach an die Funktion. In diesem Fall wird eine Änderung des Werts nach dem Senden nicht in der Funktion wiedergegeben. Klassenverwendungen werden als Verweis übergeben, und Struct verwendet den Wert pass.
- Vererbung: Klassen können weiter vererbt werden, um Unterklassen zu bilden, aber Structs kann keine Vererbung verwenden. Zum Beispiel gibt der Klassenspeicher seine Funktionen an die Unterklasse "Lebensmittelgeschäft" weiter. Aber der Struct 'grocery_entrance' kann keine Funktion übernehmen. Wir können sagen, dass es hier kein Konzept wie Sub-Struktur gibt.
- Standardsichtbarkeit: Alle Mitglieder einer Klasse werden standardmäßig als private Entitäten geführt, während die Mitglieder eines Struct standardmäßig als öffentliche Entitäten geführt werden.
- Die Größe eines leeren Class and Struct: Class verwendet eine Größe von 1 Byte, auch wenn es leer ist, während Struct niemals einen Speicher verwendet, wenn dieser leer ist. Das heißt, wir können sagen, dass die Größe einer leeren Struktur gleich 0 Bytes ist.
- Garbage collection: Garbage Collection ist mit Classes möglich, da sie by pass by reference verwendet werden. Daher ist es einfacher, die Bereinigung an einer Stelle durchzuführen, an der die Daten gespeichert sind. Auf der anderen Seite ist eine Speicherbereinigung mit Struct nicht möglich, da sie einen Wert für die Übergabe verwendet und die Daten an verschiedenen Orten verstreut sind.
- Speicherverwaltung: Da die Klasse Speicherbereinigungen zulässt, ist auch die Speicherverwaltung wirksam. es ist jedoch nicht so effektiv mit Structs.
- Konstruktor: Ein Konstruktor initialisiert die Klasse im Allgemeinen mit bestimmten angegebenen Werten. Wir können es als etwas betrachten, das mit Werten initialisiert wurde. Wenn eine neue Klasse erstellt werden muss, wird der Konstruktor aufgerufen, um Speicher für diese Instanz zuzuweisen. Wir können sogar Werte als Argumente übergeben, während wir einen Konstruktor aufrufen. Kommen wir jetzt zu unserer aktuellen Diskussion. Klassen erlauben Konstruktoren aller Typen, beispielsweise mit oder ohne Argumente, während Strukturen die Konstruktoren nur mit Argumenten erlauben, d. e. die parametrisierten Konstruktoren.
- Destruktor: Ein Destruktor wird aufgerufen, wenn wir eine Instanz einer Klasse löschen müssen. Der Destruktor wiederum löscht diese Instanz und gibt Speicher frei. Eine Klasse kann einen Destruktor verwenden, während ein Struct nicht kann.
- Elementvariable-Initialisierung: In Klassen können wir die Elementvariablen direkt initialisieren; Eine solche Initialisierung ist mit Structs nicht möglich.
- Objekterstellung: Die allgemeine Syntax für die Objekterstellung in Klassen lautet:
Demo obj = new Demo ();
Dies bedeutet, dass wir beim Erstellen von Objekten einer Klasse das Schlüsselwort 'new' verwenden müssen.Dies ist nicht erforderlich, wenn Objekte von Structs erstellt werden. Sehen Sie sich deren Syntax an:
Demo obj;
Es funktioniert auch ohne das Schlüsselwort "neu" einwandfrei.
Wann sollte die Klasse verwendet werden und wann sollte sie verwendet werden?
Da Klassen bei der Übergabe von Daten und Funktionen flexibler sind, können wir darauf zurückgreifen, wenn die verwendeten Objekte komplex und groß sind. In unserem Beispiel kann eine Mall die Klasse 'store' verwenden, um das System besser auszudrücken. Strukturen sind jedoch auf kleinere Objekte beschränkt, da sie vergleichsweise weniger effektiv als Klassen sind. Wenn Sie also ein eigenes Geschäft entwerfen, sind Structs die bessere Wahl.
Wie konvertiert man ein Struct in eine Klasse und umgekehrt?
Vielleicht haben Sie die Begriffe "Boxen" und "Unboxing" gehört, um ein Struct in eine Klasse umzuwandeln und umgekehrt. Obwohl dies effektive Prozesse sind, die uns bei der Konvertierung helfen, sollten sie mit Vorsicht gehandhabt werden. Da sich dies direkt auf die Speicherorte auswirkt, hat dies einen großen Einfluss auf die Leistung unseres Systems. Darüber hinaus wirkt es sich auf die Speicherbereinigungsprozesse aus und führt zu einer allgemeinen Systemineffizienz. Verwenden Sie diese Konvertierungen daher nur bei Bedarf.
Betrachten wir die oben genannten Unterschiede in Tabellenform.