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.