Variablen in Java folgen keinem Polymorphismus. Das Überschreiben gilt nur für Methoden, nicht aber für Variablen. Wenn in Java sowohl die untergeordnete als auch die übergeordnete Klasse eine Variable mit demselben Namen haben, verbirgt die Variable der untergeordneten Klasse die Variable der übergeordneten Klasse, selbst wenn ihre Typen unterschiedlich sind. Dieses Konzept ist als Variable Hiding bekannt . Im Fall des Überschreibens von Methoden ersetzen überschreibende Methoden die geerbten Methoden vollständig, aber beim Ausblenden von Variablen verbirgt die untergeordnete Klasse die geerbten Variablen, anstatt sie zu ersetzen, was im Grunde bedeutet, dass das Objekt der untergeordneten Klasse beide Variablen enthält, aber die Variable des Kindes die Variable des übergeordneten Elements verbirgt. 

Wenn wir also versuchen, auf die Variable innerhalb der untergeordneten Klasse zuzugreifen, wird von der untergeordneten Klasse aus darauf zugegriffen. Wenn wir versuchen, außerhalb der Parent- und Child-Klasse auf die Variable zuzugreifen, wird die Instanzvariable aus dem Referenztyp ausgewählt.

Beispiel

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);
    }
}
Ausgabe
innerhalb der C-Unterklasse
10
20

Fazit: 

Variablen in Java folgen nicht dem Polymorphismus und dem Überschreiben. Wenn wir versuchen, auf die Variable außerhalb der Parent- und Child-Klasse zuzugreifen, wird die Instanzvariable aus dem Referenztyp ausgewählt.