Las variables en Java no siguen el polimorfismo y la anulación

Las variables en Java no siguen el polimorfismo. La anulación solo se aplica a los métodos, pero no a las variables. En Java, si la clase principal y la secundaria tienen una variable con el mismo nombre, la variable de la clase secundaria oculta la variable de la clase principal, incluso si sus tipos son diferentes. Este concepto se conoce como Ocultación de Variables . En el caso de la anulación de métodos , los métodos de anulación reemplazan completamente los métodos heredados, pero en la ocultación de variables, la clase secundaria oculta las variables heredadas en lugar de reemplazarlas, lo que básicamente significa que el objeto de la clase secundaria contiene ambas variables, pero la variable secundaria oculta la variable principal. 

Por lo tanto, cuando intentemos acceder a la variable dentro de la clase Child, se accederá desde la clase child. Si intentamos acceder a la variable fuera de la clase principal y secundaria, la variable de instancia se elige del tipo de referencia.

Ejemplo

Java

// Java Program Illustrating Instance variables
// Can not be Overridden
  
// Class 1
// Parent class
// Helper class
class Parent {
    // Declaring instance variable by name `a`
    int a = 10;
    public void print()
    {
        System.out.println("inside B superclass");
    }
}
  
// Class 2
// Child class
// Helper class
class Child extends Parent {
  
    // Hiding Parent class's variable `a` by defining a
    // variable in child class with same name.
    int a = 20;
  
    // Method defined inside child class
    public void print()
    {
        // Print statement
        System.out.println("inside C subclass");
    }
}
  
// Main class
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
        // Creating a Parent class object
        // Reference Parent
        Parent obj = new Child();
  
        // Calling print() method over object created
        obj.print();
  
        // Printing superclass variable value 10
        System.out.println(obj.a);
  
        // Creating a Child class object
        // Reference Child
        Child obj2 = new Child();
  
        // Printing childclass variable value 20
        System.out.println(obj2.a);
    }
}
Producción

inside C subclass
10
20

Conclusión: 

Las variables en Java no siguen el polimorfismo ni la anulación. Si estamos tratando de acceder a la variable fuera de la clase principal y secundaria, entonces la variable de instancia se elige del tipo de referencia.

Publicación traducida automáticamente

Artículo escrito por dattabikash505 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *