Heim >Java >javaLernprogramm >Wie kann ich in Java auf Unterklassenmethoden einer Oberklasse zugreifen?

Wie kann ich in Java auf Unterklassenmethoden einer Oberklasse zugreifen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-07 10:04:12748Durchsuche

How Can I Access Subclass Methods from a Superclass in Java?

Aufrufen von Unterklassenmethoden aus der Oberklasse

Problem

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.

Lösung

Um diese Einschränkung zu beheben, können Sie eine der folgenden Methoden verwenden:

  • Deklarieren Sie die Variable als abgeleitet Klasse:
Cat cat = new Cat("Feline", 12, "Orange");
cat.getName(); // OK
cat.getColor(); // OK (getColor() is in Cat)
  • Wandeln Sie die Variable in den gewünschten konkreten Typ um:
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.

Beispiel

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn