Zugriff auf Unterklassenmethoden von Superklassen
In der objektorientierten Programmierung ermöglicht die Vererbung, dass Klassen Eigenschaften und Verhaltensweisen von ihren übergeordneten Klassen erben. Beim Zugriff auf Methoden von Unterklassen über eine Superklassenvariable treten jedoch einige Einschränkungen auf.
Beachten Sie den folgenden Codeausschnitt:
abstract public class Pet { ... } public class Cat extends Pet { private String color; public String getColor() { ... } } public class Kennel { public static void main(String[] args) { Pet cat = new Cat("Feline", 12, "Orange"); cat.getColor(); // Compiler error: getColor() not defined in Pet } }
Wenn in der Kennel-Klasse ein Cat-Objekt einem zugewiesen wird Pet-Variable, nur in Pet definierte Mitglieder sind zugänglich. Dazu gehören Methoden wie getName() und getAge(), aber nicht getColor().
Um dieses Problem zu beheben, gibt es zwei Möglichkeiten:
1. Variable als Unterklasse deklarieren:
Variable als spezifische Unterklasse deklarieren:
Cat cat = new Cat("Feline", 12, "Orange"); cat.getColor(); // Valid, getColor() is defined in Cat
2. Variable in Unterklasse umwandeln:
Variable in eine bekannte oder erwartete Unterklasse umwandeln:
Pet cat = new Cat("Feline", 12, "Orange"); ((Cat)cat).getColor(); // Valid, getColor() is accessible via casting
Beispielimplementierung:
Hier ist eine korrigierte Version der Kennel-Klasse:
public class Kennel { public static void main(String[] args) { Cat cat = new Cat("Feline", 12, "Orange"); System.out.println("Cat's color: " + cat.getColor()); } }
Das obige ist der detaillierte Inhalt vonWie kann ich in Java über eine Superklassenvariable auf Unterklassenmethoden zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!