Heim >Java >javaLernprogramm >Wie kann ich in Java auf Unterklassenmethoden einer Oberklasse zugreifen?
In Java kommt es beim Erben von Klassen und Erstellen von Unterklassen häufig zu Problemen beim Zugriff auf unterklassenspezifische Methoden aus der Oberklasse. Dies geschieht, wenn Sie ein Unterklassenobjekt instanziieren und es einer Oberklassenvariablen zuweisen.
Um diese Einschränkung zu beheben, können Sie eine der folgenden Methoden verwenden:
Cat cat = new Cat("Feline", 12, "Orange"); cat.getName(); // OK cat.getColor(); // OK (getColor() is in Cat)
Pet pet = new Cat("Feline", 12, "Orange"); ((Cat)pet).getName(); // OK ((Cat)pet).getColor(); // OK (explicitly treated as Cat)
Bei der Ausführung Bei einer Umwandlung behandeln Sie das Objekt vorübergehend als Instanz des angegebenen Typs. Dadurch können Sie auf unterklassenspezifische Mitglieder und Methoden zugreifen.
Betrachten Sie die folgende modifizierte Hauptklasse:
public class Kennel { public static void main(String[] args) { // Create the pet objects Cat cat = new Cat("Feline", 12, "Orange"); Pet dog = new Dog("Spot", 14, "Dalmatian"); Pet bird = new Bird("Feathers", 56, 12); // Print out the status of the animals System.out.println("I have a cat named " + cat.getName() + ". He is " + cat.getAge() + " years old." + " He is " + cat.getColor() + ". When he speaks he says " + cat.speak()); // Using a cast to access a subclass-specific method ((Cat)dog).getBreed(); // dog is treated as Cat to access getBreed() System.out.println("I also have a dog named " + dog.getName() + ". He is " + dog.getAge() + " years old." + " He is a " + ((Cat)dog).getBreed() + ". When he speaks he says " + dog.speak()); System.out.println("And Finally I have a bird named " + bird.getName() + ". He is " + bird.getAge() + " years old." + " He has a wingspan of " + bird.getWingspan() + " inches." + " When he speaks he says " + bird.speak()); } }
In diesem Beispiel wird die Hauptklasse erfolgreich abgerufen die Rasse des Hundes anhand eines Gipsverbandes.
Das obige ist der detaillierte Inhalt vonWie kann ich in Java auf Unterklassenmethoden einer Oberklasse zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!