En C++ tenemos todos los métodos de miembros de clase como no virtuales. Para hacerlo, tenemos que usar una palabra clave como prefijo conocida como virtual . Mientras que en Java, tenemos todos los métodos de miembros de clase como virtuales de forma predeterminada. Para hacerlos no virtuales, usamos la palabra clave final .
Las variables de referencia en Java son básicamente variables que contienen la dirección del objeto en tipo hexadecimal que luego se convierte al sistema binario que básicamente es la dirección del objeto que se almacenará en la memoria del montón.
Variables de referencia que difieren de los tipos primitivos porque no se puede calcular su tamaño. En Java, la variable de referencia de la clase principal es capaz de contener su referencia de objeto, así como su referencia de objeto secundario. Veamos los miembros que no son del método con la ayuda de un ejemplo.
Ejemplo:
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); } }
Parent Constructor Child Constructor Reference of Child Type :10 Reference of Parent Type : 1000
Explicación de salida: si una variable de referencia principal contiene la referencia de la clase secundaria y tenemos la variable «valor» tanto en la clase principal como en la secundaria, se referirá a la variable de «valor» de la clase principal, ya sea que contenga la clase secundaria referencia de objeto La referencia que contiene la referencia del objeto de la clase secundaria no podrá acceder a los miembros (funciones o variables) de la clase secundaria. Esto se debe a que la variable de referencia principal solo puede acceder a los campos que se encuentran en la clase principal. Por lo tanto, el tipo de variable de referencia decide qué versión de «valor» se llamará y no el tipo de objeto que se instancia. Es porque el compilador usa un mecanismo especial de polimorfismo en tiempo de ejecución solo para métodos. (Allí, el tipo de objeto que se instancia decide qué versión del método se llamará).
Nota: Es posible acceder a miembros de datos secundarios mediante el puntero principal con encasillamiento.
Este artículo es una contribución de Twinkle Tyagi . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA