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.