Variablen in Java folgen nicht dem Polymorphismus und dem Überschreiben
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); } }
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.