Les classes de pares i fills que tenen les mateixes dades a Java

A C ++ tenim tots els mètodes de membre de classe com a no virtuals. Per tal de fer -ho, hem d'utilitzar una paraula clau com a prefix conegut com a virtual . Mentre que a Java tenim tots els mètodes de membre de classe com a virtuals de manera predeterminada. Per tal de fer-los no virtuals, utilitzem la paraula clau final .

Les variables de referència a Java són bàsicament variables que contenen l’adreça de l’objecte en tipus hexadecimal que més tard es converteix al sistema binari que bàsicament és l’adreça de l’objecte que s’ha d’emmagatzemar a la memòria del munt.

Les variables de referència que difereixen dels tipus primitius, ja que no es poden calcular la seva mida. A Java, la variable de referència de la classe pare és capaç de contenir la referència de l'objecte i la referència d'objectes infantils. Anem a veure sobre els membres que no són del mètode amb l’ajuda d’un exemple.

Exemple:

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

Producció
Parent Constructor Child Constructor Reference of Child Type :10 Reference of Parent Type : 1000 

Explicació de sortida: Si una variable de referència dels pares manté la referència de la classe infantil i tenim la variable "valor" tant a la classe Parent com a la infància, es referirà a la variable "valor" de la classe de pares, ja sigui referència a l'objecte de la classe infantil. La referència de referència de la classe infantil no podrà accedir als membres (funcions o variables) de la classe infantil. Això es deu al fet que la variable de referència dels pares només pot accedir a camps que es troben a la classe de pares. Així, el tipus de variable de referència decideix quina versió de "valor" s'anomenarà i no el tipus d'objecte que s'inicia. És degut a que el compilador utilitza un mecanisme especial de polimorfisme en temps d'execució només per a mètodes. (Allà el tipus d'objecte que s'inicia decideix quina versió del mètode s'ha d'anomenar).

NOTA: És possible accedir als membres de les dades infantils que utilitzin el punter parent amb la tipografia.