Triedy rodičov a detí, ktoré majú rovnaký člen údajov v Java
V C ++ máme všetky metódy členov triedy ako nekrotelové. Aby sme to urobili, musíme použiť kľúčové slovo ako predponu známa ako virtuálny . Zatiaľ čo v Java máme v predvolenom nastavení všetky metódy členov triedy ako virtuálne. Aby sme z nich urobili nekrotelové, používame kľúčové slovo finále .
Referenčné premenné v Java sú v podstate premenné, ktoré držajú adresu objektu v hexadecimálnom type, ktorý sa neskôr prevedie na binárny systém, ktorý je v podstate adresou objektu, ktorý sa má uložiť do haldy.
Referenčné premenné, ktoré sa líšia od primitívnych typov, pretože ich veľkosť nie je možné vypočítať. V Java je referenčná premenná materskej triedy schopná držať referenciu svojho objektu, ako aj odkaz na svoj detský objekt. Pozrime sa na členov, ktorí nie sú metódmi pomocou príkladu.
Príklad:
Java // Java Program to Demonstrate that Non-method Members // are Accessed according to Reference Type // (Unlike methods that are accessed according // to the referred object) // Class 1 // Super class class Parent { int value = 1000 ; // Constructor of super class Parent () { // Print statement System . out . println ( 'Parent Constructor' ); } } // Class 2 // Sub class class Child extends Parent { int value = 10 ; // Constructor of sub class Child () { // Print statement System . out . println ( 'Child Constructor' ); } } // Class 3 // Main class class GFG { // Main driver method public static void main ( String [] args ) { // Creating an object of sub class inside main() // method Child obj = new Child (); // Printing the reference of child type System . out . println ( 'Reference of Child Type :' + obj . value ); // Note that doing 'Parent par = new Child()' // would produce same result Parent par = obj ; // Par holding obj will access the value // variable of parent class // Printing the reference of parent type System . out . println ( 'Reference of Parent Type : ' + par . value ); } }
Výstup
Parent Constructor Child Constructor Reference of Child Type :10 Reference of Parent Type : 1000
Vysvetlenie výstupu: Ak rodičovská referenčná premenná drží odkaz na detskú triedu a máme premennú „hodnoty“ v triede rodičov a detí, bude sa odvolávať na premennú hodnoty rodičovskej triedy, či drží odkaz na objekt triedy detskej triedy. Referencia, ktorá drží odkaz na objekt triedy detskej triedy, nebude mať prístup k členom (funkcie alebo premennými) detskej triedy. Dôvodom je, že rodičovská referenčná premenná má prístup k poliam, ktoré sú v rodičovskej triede. Typ referenčnej premennej rozhoduje, ktorá verzia „hodnoty“ sa bude nazývať a nie typ inštancie objektu. Je to preto, že kompilátor používa špeciálny mechanizmus polymorfizmu s run-time iba pre metódy. (Typ inštancie objektu rozhoduje, ktorá verzia metódy sa má volať).
Poznámka: Je možné získať prístup k členom detských údajov pomocou rodičovského ukazovateľa s typom.