logo

Foreldre- og barneklasser som har samme datamedlem i Java

I C ++ har vi alle klassemedlemmer som ikke-virtuelle. For å lage slik at vi må bruke et nøkkelord som et prefiks kjent som virtuell . Mens vi i Java har alle klassemedlemmer som virtuelle som standard. For å gjøre dem ikke-virtuelle bruker vi nøkkelordet Endelig .

Referansevariabler i Java er i utgangspunktet variabler som holder adressen til objektet i heksadesimal type som senere blir konvertert til det binære systemet som i utgangspunktet er adressen til objektet som skal lagres på heapminnet.



i rekkefølge

Referansevariabler som skiller seg fra primitive typer da størrelsen ikke kan beregnes. I Java er referansevariabelen til foreldreklassen i stand til å holde sin objektreferanse så vel som sin barneobjektreferanse. La oss se om ikke-metodemedlemmer ved hjelp av et eksempel.

Eksempel:

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);  } } 

Produksjon
Parent Constructor Child Constructor Reference of Child Type :10 Reference of Parent Type : 1000

Utgang Forklaring: Hvis en foreldrereferansevariabel holder referansen til barneklassen og vi har "Verdi" -variabelen i både foreldre- og barneklassen, vil den referere til foreldreklassen 'Value' -variabelen om den holder barneklasseobjektreferanse. Henvisningen som holder Child Class Object Reference vil ikke kunne få tilgang til medlemmene (funksjoner eller variabler) i barneklassen. Dette er fordi foreldrereferansevariabelen bare kan få tilgang til felt som er i foreldreklassen. Dermed bestemmer typen referansevariabel hvilken versjon av 'verdi' som vil bli kalt og ikke typen objekt som blir instantiert. Det er fordi kompilatoren bruker en spesiell polymorfismemekanisme bare for metoder. (Der bestemmer den typen objekt som blir instantiert hvilken versjon av metoden som skal kalles).



Note: Det er muliggjort å få tilgang til barnedatamedlemmer ved hjelp av overordnet peker med typecasting.