logo

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.