Bevor wir den Unterschied zwischen Class und Struct verstehen, sollten wir einige grundlegende Konzepte kennen, die mit ihnen verbunden sind. Ohne Verständnis der Begriffe ist es schwierig, die Unterschiede zwischen den beiden zu verstehen.
Dies sind die zwei wichtigen Konzepte, die sich auf die objektorientierte Programmierung beziehen. Sie bilden die Grundlage für die Gestaltung der Funktionen und der Datenübergabe an andere Funktionen. Zum besseren Verständnis können wir es einem realen Beispiel zuordnen. Eine Klasse kann als Geschäft betrachtet werden, und ein Objekt kann jedes einzelne, spezifische Geschäft wie Lebensmittelgeschäft, Schreibwaren, Obst usw. sein. Alle Objekte haben die gemeinsamen Eigenschaften der Hauptklasse - des Geschäftes - und ihrerseits. Die Objekte können ihre eigenen exklusiven Eigenschaften haben, z. B. ein bestimmtes Design, eine Beleuchtung usw. Durch die Objekte können wir die Klasse tatsächlich verwenden. Sie bilden die Instanzen einer Klasse.
Syntax einer Klasse
Klassenspeicher
öffentliche Saitensachen;
öffentliches String Design;
Syntax eines Objekts
Lebensmittelgeschäft speichern = neues Geschäft ();
Store Stationery = new Store ();
Eine Struktur enthält nur die Daten. Daher ist es hilfreich, die einzelnen Datenanforderungen durch die Strukturobjekte zu erfassen. Im Gegensatz zu einer Klasse fehlen Funktionen. Hier ist die Syntax:
Struktur Lebensmitteleinkauf
char eingangsname [50];
int entry_size;
grocery_entrance;
Alle Geschäfte können den "Eingang" von Struct mit individuellen Namen und Größen verwenden.
Es ist ähnlich, wie ein Sohn die Besitztümer seines Vaters erbt, und der Sohn kann auch andere eigene Besitztümer hinzufügen. Die Klasse kann entweder eine Basisklasse oder eine abgeleitete Klasse sein, in der die erstere als Basis für die letztere verwendet werden kann. Die abgeleitete Klasse fügt nur wenige andere Eigenschaften für sich hinzu, abgesehen von dem, was sie von der Basisklasse erhält. Wenn wir das obige Beispiel betrachten, kann der Lebensmittelladen immer noch zu einem bestimmten Lebensmittelladen, z. B. einem XYZ-Lebensmittelladen, abgeleitet werden.
Nun, da wir mit den grundlegenden Konzepten vertraut sind, können wir auf den Unterschied zwischen Class und Struct eingehen.
Demo obj = neue Demo ();
Das 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. Schauen Sie sich einfach die Syntax an:
Demo obj;
Es funktioniert auch ohne das Stichwort "new" einwandfrei.
Da die Klassen beim Umgang mit Daten und Funktionen flexibler sind, können wir dies tun, wenn die verwendeten Objekte komplex und umfangreich 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 sind als Klassen. Wenn Sie also ein eigenes Geschäft entwerfen, ist Structs die bessere Wahl.
Möglicherweise haben Sie die Begriffe "Boxen" und "Unboxing" gehört, um ein Struct in eine Klasse zu konvertieren und umgekehrt. Obwohl dies effektive Prozesse sind, die uns bei der Konvertierung unterstützen, sollten sie mit Vorsicht behandelt werden. Da dies sich direkt auf die Speicherorte auswirkt, hat dies erhebliche Auswirkungen auf die Leistung unseres Systems. Darüber hinaus beeinflusst es die Abfallsammelprozesse und führt zu einer Ineffizienz des Gesamtsystems. Verwenden Sie diese Konvertierungen daher nur bei Bedarf.
Betrachten wir die oben genannten Unterschiede in Tabellenform.
S.Nr | Konzepte | Unterschiede | |
Klasse | Struktur | ||
1 | Wiederverwendbarkeit | Vollständig wiederverwendbar | Nicht wiederverwendbar |
2 | Sichtweite | Alle Funktionen einer Klasse sind für ihre Objekte sichtbar | Die Daten eines Objekts einer Struktur sind für andere Objekte derselben Struktur nicht sichtbar |
3 | Referenz übergeben & Wert übergeben | Verwendet Pass by Reference | Verwendet Pass nach Wert |
4 | Erbe | Die Funktionen einer Klasse können von ihren Unterklassen vererbt werden. erlaubt Vererbung | Erlaubt niemals Vererbung |
5 | Standardsichtbarkeit | Alle Mitglieder einer Klasse sind standardmäßig privat | Alle Mitglieder einer Struktur sind standardmäßig öffentlich |
6 | Größe wenn leer | Die Größe einer leeren Klasse beträgt 1 Byte | Die Größe der leeren Struktur beträgt 0 Bytes |
7 | Müllsammlung | Da es als Referenz verwendet wird, ist die Speicherbereinigung möglich | Da der Wert als Wert übergeben wird, ist die Garbage Collection nicht möglich |
8 | Speicherverwaltung | Die Einfachheit des Speicherbereinigungsprozesses hilft bei der effektiven Speicherverwaltung | Das Fehlen einer Speicherbereinigung führt zu einer schlechten Speicherverwaltung |
9 | Konstruktoren | Erlaubt Konstruktoren aller Art, z. B. mit oder ohne Parameter | Erlaubt nur parametrisierte Konstruktoren |
10 | Zerstörer | Kann es benutzen | Kann es nicht benutzen |
11 | Member-Variablen-Initialisierung | Ermöglicht die direkte Initialisierung von Membervariablen | Erlaubt keine direkte Wortinitialisierung von Mitgliedsvariablen |
12 | Objekterstellung | Das Schlüsselwort 'new' muss während der Objekterstellung verwendet werden | Es ist optional, das Schlüsselwort 'new' während der Objekterstellung zu verwenden |
13 | Wann verwenden?? | Besser für größere und komplexe Objekte, bei denen Vererbung erforderlich ist | Besser für kleinere und einfachere Objekte, bei denen Vererbung von geringerer Bedeutung ist. |
Wir haben fast alle Unterschiede zwischen Class und Struct aufgedeckt. Wenn Sie das Gefühl haben, dass etwas fehlt, teilen Sie uns dies bitte mit. Lass uns zusammen lernen und dieses Wissen bestmöglich nutzen!