Zugriff auf Unterklasse-Methoden von SuperClass
In objektorientierten Programmierungen ermöglichen Erbschaft Klassen, Eigenschaften und Verhalten aus ihren Elternklassen zu erben. Wenn Sie jedoch auf Methoden von Unterklassen aus einer Superklasse -Variable zugreifen, treten einige Einschränkungen auf.
Betrachten Sie den folgenden Code -Snippet:
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 } }
In der Zwingerklasse, wenn ein Katzenobjekt einer PET -Variablen zugewiesen wird, sind nur in PET definierte Mitglieder zugänglich. Dies umfasst Methoden wie GetName () und getage (), aber nicht getColor ().
Um dies zu beheben, gibt es zwei Optionen:
1. Variable als Unterklasse deklarieren:
die Variable als spezifische Unterklasse deklarieren:
Cat cat = new Cat("Feline", 12, "Orange"); cat.getColor(); // Valid, getColor() is defined in Cat
2. Cast Variable in Unterklasse:
die Variable in eine bekannte oder erwartete Unterklasse geben:
Pet cat = new Cat("Feline", 12, "Orange"); ((Cat)cat).getColor(); // Valid, getColor() is accessible via casting
Beispiel Implementierung:
Hier ist eine korrigierte Version der Kennelklasse:
public class Kennel { public static void main(String[] args) { Cat cat = new Cat("Feline", 12, "Orange"); System.out.println("Cat's color: " cat.getColor()); } }
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3