Třídy rodičů a dítěte, které mají stejný datový člen v Javě

V C ++ máme všechny metody členů třídy jako virtuální. Abychom mohli udělat, musíme použít klíčové slovo jako předponu známou jako virtuální . Zatímco v Javě máme ve výchozím nastavení všechny metody členů třídy jako virtuální. Aby byly virtuální, používáme klíčové slovo finále .

Referenční proměnné v Java jsou v zásadě proměnné, které drží adresu objektu v hexadecimálním typu, který je později převeden na binární systém, který je v zásadě adresou objektu, který má být uložen na paměti haldy.

Referenční proměnné, které se liší od primitivních typů, nelze vypočítat. V Javě je referenční proměnná třídy nadřazení schopna udržet odkaz na objekt a odkaz na dětský objekt. Podívejme se na členy ne-metod pomocí příkladu.

Pří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 

Vysvětlení výstupu: Pokud rodičovská referenční proměnná drží odkaz na třídu dítěte a máme proměnnou „hodnoty“ v rodičovské i dítěti, bude odkazovat na proměnnou nadřazené třídy „Hodnota“, zda má odkaz na objekt třídy Child Class. Reference, která drží odkaz na objekt třídy Child Class, nebude mít přístup k členům (funkce nebo proměnné) třídy dítěte. Je to proto, že rodičovská referenční proměnná může přistupovat pouze k poli, která jsou v nadřazené třídě. Typ referenční proměnné tedy rozhoduje, která verze „hodnoty“ bude volána a nikoli typ instance objektu. Je to proto, že kompilátor používá speciální mechanismus polymorfismu za běhu pouze pro metody. (Tam typ instance objektu rozhodne, kterou verzi metody, které má být voláno).

Poznámka: Je možné získat přístup k členům dětských dat pomocí ukazatele mateřského ukazatele s typcecastingem.