Objekt vs. instance
Objektově orientované programování (OOP) je jedním z nejpopulárnějších programovacích paradigmat. V OOP je kladen důraz na přemýšlení o problému, který má být vyřešen z hlediska prvků reálného světa, a představuje problém z hlediska objektů a jejich chování. Mnoho programovacích jazyků, které podporují klíčové aspekty OOP (nazývané OOP jazyky), má třídu jako hlavní programovací nástroj. Říká se jim třída. Třídy jsou abstraktní reprezentace objektů skutečného světa. Třídy mají vlastnosti nazývané atributy. Atributy jsou implementovány jako globální a instance proměnné. Metody ve třídách představují nebo definují chování těchto tříd. Metody a atributy tříd se nazývají členy třídy. Zjednodušeně řečeno, třída je plán nebo šablona pro konkrétní objekt skutečného života. Objekt je tedy paměťovým blokem (bloky) použitými k ukládání potřebných informací podle tohoto plánu. Instance je blok paměti, který odkazuje na objekt.
Co je to objekt?
Objekty jsou výsledky instancí třídy. Okamžitost je proces převzetí plánu a definování každého atributu a chování tak, aby výsledný objekt skutečně reprezentoval objekt skutečného života. Objekt je vyhrazený a souvislý blok paměti přidělený k ukládání informací, jako jsou proměnné, metody nebo funkce atd. Objekt je vytvořen pomocí nového operátora v programovacím jazyce Java. Například, pokud existuje třída s názvem Car, pak lze k vytvoření objektu třídy Car použít následující.
nové auto ();
Zde je nový operátor vytvořen objekt Car a je vrácen odkaz na objekt. Nový operátor se spolu s konstruktorem třídy Car používá k vytvoření nového objektu. Životnost objektu začíná od volání jeho konstruktéra do doby, kdy je zničena. Jakmile objekt není předán, bude odstraněn / zničen sběratelem odpadu.
Co je to instance?
Instance je blok paměti, který obsahuje odkaz na objekt. Jinými slovy, instance si uchová adresu počátečního paměťového bloku, kde je objekt uložen. Název instance lze ve skutečnosti použít k přístupu na začátek oblasti paměti objektů. Offsety ze startovací paměti jsou vypočítávány modulem runtime, takže můžeme jít na místo, kde jsou uložena jednotlivá data nebo odkazy na metody. Následující kód Java může být použit k vytvoření instance objektu Car.
MyCar = nové auto ();
Jak bylo uvedeno výše, nový operátor vytvoří objekt Car a vrátí na něj odkaz. Tento odkaz je uložen v proměnné typu Car myCar. MyCar je tedy instancí vytvořeného objektu Car.
Jaký je rozdíl mezi objektem a instancí?
Objekt je souvislý blok paměti, který ukládá skutečné informace, které odlišují tento objekt od jiných objektů, zatímco instance je odkaz na objekt. Je to blok paměti, který ukazuje na počáteční adresu, kde je objekt uložen. Dva příklady se mohou vztahovat na stejný objekt. Životnost objektu a instance nesouvisí. Proto může být instance neplatná. Po odstranění všech instancí směřujících k objektu bude objekt zničen.