Než pochopíme rozdíl mezi třídou a strukturou, měli bychom znát několik základních pojmů, které jsou s nimi spojeny. Bez pochopení pojmů je obtížné pochopit rozdíly mezi nimi.
Jedná se o dva důležité pojmy související s objektově orientovaným programováním a tvoří základ pro sestavení funkcí a předávání dat dalším funkcím. Pro lepší pochopení ji můžeme sladit s příkladem skutečného života. Třídu lze považovat za obchod a objekt může být kterýkoli z jednotlivých konkrétních obchodů, jako jsou potraviny, papírnictví, ovoce atd. Všechny objekty sdílejí společné vlastnosti hlavní třídy - obchod - a naopak, objekty mohou mít své vlastní exkluzivní vlastnosti, jako je konkrétní design, osvětlení atd. Prostřednictvím objektů můžeme skutečně použít třídu; tvoří příklady třídy.
Syntax třídy
Třídní obchod
věci z veřejných řetězců;
design veřejných řetězců;
Syntaxe objektu
Obchod s potravinami = nový obchod ();
Store Stationery = new Store ();
Struktura obsahuje pouze data, a proto je užitečné při vytváření individuálních požadavků na data prostřednictvím objektů Struktura. Na rozdíl od třídy postrádá funkce. Zde je jeho syntax:
struct grocery_entrance
char entry_name [50];
int vchod_size;
grocery_entrance;
Všechny obchody mohou používat „vchod“ struktury s jednotlivými jmény a velikostmi.
Je to podobné tomu, jak syn zdědí majetek svého otce, a na druhé straně může syn přidat i další vlastní majetek. Třída může být buď základní třída nebo odvozená třída, ve které může být první považována za základnu pro vytvoření druhé třídy. Odvozená třída přidává několik dalších vlastností pro sebe, kromě toho, co získává ze základní třídy. Když vezmeme v úvahu výše uvedený příklad, obchod s potravinami může být stále odvozen od konkrétního obchodu s potravinami, jako je obchod s potravinami XYZ.
Nyní, když jsme obeznámeni se základními pojmy, můžeme jít do skutečného rozdílu mezi třídou a strukturou.
Demo obj = new Demo ();
To znamená, že při vytváření objektů třídy musíme použít klíčové slovo „nové“. To není nutné při vytváření objektů struktur. Stačí se podívat na jejich syntaxi:
Demo obj;
Funguje to perfektně i bez klíčového slova „nové“.
Protože třídy jsou flexibilnější při předávání dat a funkcí dohromady, můžeme se o to snažit, když jsou použité objekty složité a velké. V našem příkladu může Mall použít třídu „store“ k lepšímu vyjádření systému. Struktury jsou však omezeny na menší objekty, protože jsou relativně méně efektivní než třídy. Pokud tedy navrhujete vlastní obchod, Struktury jsou tou lepší volbou.
Možná jste slyšeli výrazy „box“ a „rozbalení“, abyste převedli strukturu na třídu a naopak. I když se jedná o efektivní procesy, které nám pomáhají při přeměně, mělo by se s nimi zacházet opatrně. Protože to přímo ovlivňuje umístění paměti, má obrovský dopad na výkon našeho systému. Kromě toho ovlivňuje procesy sběru odpadu a vede k celkové neefektivnosti systému. Proto tyto převody používejte pouze v případě potřeby.
Podívejme se na výše uvedené rozdíly v podobě tabulky.
S. Ne | Koncepty | Rozdíly | |
Třída | Struktura | ||
1 | Opakovaná použitelnost | Zcela znovu použitelné | Nelze znovu použít |
2 | Viditelnost | Všechny funkce třídy jsou viditelné pro její objekty | Data objektu Struktura nejsou viditelná pro jiné objekty stejné Struktury |
3 | Předat podle reference a předat podle hodnoty | Použití Pass by Reference | Používá předávání podle hodnoty |
4 | Dědictví | Funkce třídy mohou být zděděny svými podtřídami; umožňuje dědičnost | Nikdy nedovoluje dědičnost |
5 | Výchozí viditelnost | Všichni členové třídy jsou ve výchozím nastavení soukromé | Ve výchozím stavu jsou všichni členové struktury veřejní |
6 | Velikost, když je prázdný | Velikost prázdné třídy je 1 byte | Velikost prázdné struktury je 0 bajtů |
7 | Sběr odpadu | Protože používá průchod odkazem, je možné shromažďovat odpadky | Protože používá předávání hodnoty, sběr odpadu není možný |
8 | Správa paměti | Snadnost procesu sběru odpadu pomáhá při efektivní správě paměti | Nedostatek sběru odpadu má za následek špatnou správu paměti |
9 | Konstruktory | Umožňuje konstruktérům všech typů, například s parametry nebo bez parametrů | Umožňuje pouze parametrizované konstruktéry |
10 | Destruktory | Může to použít | Nelze jej použít |
11 | Inicializace proměnných členů | Umožňuje přímou inicializaci členských proměnných | Nepovoluje přímou inicializaci slov členských proměnných |
12 | Vytvoření objektu | Při vytváření objektu je nutné použít klíčové slovo „nové“ | Při vytváření objektu je volitelné použít klíčové slovo „nové“ |
13 | Kdy použít? | Lepší pro větší a složitější objekty, kde je vyžadována dědičnost | Lepší pro menší a jednodušší objekty, kde je dědičnost méně důležitá. |
Téměř jsme pokryli všechny rozdíly mezi třídou a strukturou, a pokud máte pocit, že něco chybí, dejte nám prosím vědět. Pojďme se společně učit a co nejlépe využít těchto znalostí!