Inden vi forstår forskellen mellem klasse og struktur, bør vi kende et par grundlæggende koncepter, der er knyttet til dem. Uden forståelse af begreber er det vanskeligt at forstå forskellene mellem de to.
Dette er de to vigtige begreber, der er relateret til objektorienteret programmering, og de danner grundlaget for at indramme funktionerne og dataene, der overføres til andre funktioner. For en bedre forståelse kan vi sammenhænge det med et ægte eksempel. En klasse kan betragtes som en butik, og et objekt kan være en hvilken som helst af de enkelte, specifikke butikker såsom købmand, papirvarer, frugt osv. Alle objekter deler de fælles egenskaber for hovedklassen - butikken - og til gengæld objekterne kan have deres egne eksklusive egenskaber såsom et specifikt design, belysning osv. Gennem objekterne kan vi faktisk bruge klassen; de danner forekomsterne af en klasse.
Syntaks af en klasse
Klassebutik
ting til offentlig streng;
offentlig streng design;
Syntaks af et objekt
Butik købmand = ny butik ();
Store brevpapir = ny butik ();
En struktur inkluderer kun dataene, og derfor er det nyttigt at udforme de individuelle datakrav gennem strukturobjekterne. I modsætning til en klasse mangler det funktioner. Her er dens syntaks:
struktur købmand_entrance
char indgangsnavn [50];
int indgangsstørrelse;
købmand_entrance;
Alle butikker kan bruge Struct 'indgangen' med individuelle navne og størrelser.
Det svarer til, hvordan en søn arver sin fars besiddelser, og på sin side kan sønnen også tilføje nogle andre egne ejendele. Klassen kan enten være en baseklasse eller en afledt klasse, hvor førstnævnte kan tages som basen til at danne sidstnævnte. Den afledte klasse tilføjer få andre egenskaber for sig selv bortset fra hvad den får fra baseklassen. Når vi overvejer ovenstående eksempel, kan købmanden stadig afledes til en bestemt købmand, såsom XYZ købmand.
Nu hvor vi er bekendt med de grundlæggende koncepter, kan vi gå ind på den faktiske forskel mellem klasse og struktur.
Demo obj = ny Demo ();
Dette betyder, at vi skal bruge nøgleordet 'nyt', mens vi opretter objekter i en klasse. Dette er ikke påkrævet, når du opretter objekter af strukturer. Bare kig på deres syntaks:
Demo obj;
Det fungerer perfekt selv uden nøgleordet 'nyt'.
Da klasser er mere fleksible i at dele data og funktioner sammen, kan vi gå til det, når de anvendte objekter er komplekse og store. I vores eksempel kan et indkøbscenter bruge klassen 'butik' til at udtrykke systemet på en bedre måde. Strukturer er imidlertid begrænset til mindre objekter, da de er relativt mindre effektive end klasser. Derfor, hvis du designer en egen butik, er strukturer det bedre valg.
Du har muligvis hørt udtrykkene 'boksning' og 'unboxing' for at konvertere en struktur til en klasse, og vice versa. Selvom dette er effektive processer, der hjælper os med konverteringen, skal de håndteres med forsigtighed. Da dette direkte påvirker hukommelsesplaceringerne, er der en enorm indflydelse på vores systems ydeevne. Derudover påvirker det affaldsindsamlingsprocesserne og resulterer i en generel ineffektivitet i systemet. Brug derfor kun disse konverteringer, når det er nødvendigt.
Lad os se på de ovennævnte forskelle i tabelform.
S.No | Begreber | Forskelle | |
klasse | Struct | ||
1 | Genanvendelighed | Fuld genanvendelig | Ikke genanvendelig |
2 | Sigtbarhed | Alle funktioner i en klasse er synlige for dens objekter | Dataene til et objekt i en struktur er ikke synlige for andre objekter i den samme struktur |
3 | Pass by Reference & pass by Value | Bruger Pass by Reference | Bruger pass efter værdi |
4 | Arv | Funktionerne i en klasse kan arves af dens underklasser; tillader arv | Tillader aldrig arv |
5 | Standard synlighed | Alle medlemmer af en klasse er som standard private | Alle medlemmer af en struktur er som standard offentlige |
6 | Størrelse, når den er tom | Størrelsen på en tom klasse er 1 Byte | Størrelsen på den tomme struktur er 0 bytes |
7 | Dagrenovation | Da det bruger pass by reference, er affaldsindsamling muligt | Da det bruger pass-by-værdi, er affaldsindsamling ikke muligt |
8 | Hukommelsesadministration | Letheden i affaldsindsamlingsprocessen hjælper med effektiv hukommelsesstyring | Manglen på indsamling af affald resulterer i dårlig hukommelsesstyring |
9 | Constructors | Tillader konstruktører af alle typer, f.eks. Med eller uden parametre | Tillader kun parameteriserede konstruktører |
10 | destruktionsfunktioner | Kan bruge det | Kan ikke bruge det |
11 | Initialisering af medlemsvariabler | Tillader direkte initialisering af medlemsvariabler | Tillader ikke direkte ordinitialisering af medlemsvariabler |
12 | Oprettelse af objekt | Det er et must at bruge nøgleordet 'nyt' under oprettelse af objekt | Det er valgfrit at bruge nøgleordet 'nyt' under oprettelse af objekt |
13 | Hvornår skal bruges? | Bedre til større og komplekse genstande, hvor arv kræves | Bedre for mindre og enklere genstande, hvor arv er mindre vigtig. |
Vi har næsten dækket alle forskellene mellem klasse og struktur, og hvis du føler, at der mangler noget, så fortæl os det. Lad os lære sammen og få mest muligt ud af denne viden!