Forælder- og børneundervisning har det samme datamedlem i Java

I C ++ har vi alle klassemedlemmetoder som ikke-virtuel. For at gøre det er vi nødt til at bruge et nøgleord som præfiks, der er kendt som Virtual . Mens vi i Java har alle klassemedlemmetoder som virtuel som standard. For at gøre dem til ikke-virtuel bruger vi nøgleordet endelig .

Referencevariabler i Java er dybest set variabler, der holder adressen på objektet i hexadecimal type, som senere konverteres til det binære system, der dybest set er adressen på det objekt, der skal gemmes på dyngenhukommelsen.

Referencevariabler, der adskiller sig fra primitive typer som deres størrelse, kan ikke beregnes. I Java er referencevariablen for forældreklassen i stand til at holde sin objektreference såvel som dets reference til børneobjekt. Lad os se om ikke-metodemedlemmer ved hjælp af 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  );      }   }   

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

Output Forklaring: Hvis en overordnet referencevariabel holder referencen til børneklassen, og vi har variablen 'Value' i både forælder- og børneklassen, vil den henvise til variablen over forældreklassen 'Værdi', uanset om den holder børneklasse -objektreference. Referencen, der holder barnetklasse -objektreferencen, kan ikke få adgang til medlemmerne (funktioner eller variabler) i børneklassen. Dette skyldes, at overordnede referencevariablen kun kan få adgang til felter, der er i overordnede klassen. Således bestemmer typen af ​​referencevariabel, hvilken version af 'værdi' der kaldes, og ikke den type objekt, der er instantieret. Det skyldes, at kompilatoren kun bruger en speciel polymorfismemekanisme til kørselstid til metoder. (There the type of object being instantiated decides which version of the method to be called).

Note: Det er muliggjort at få adgang til børnedatamedlemmer ved hjælp af forældremarkøren med typecasting.