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
Freigeben: 2024-12-07 10:04:12
Original
753 Leute haben es durchsucht

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)
Nach dem Login kopieren
  • 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)
Nach dem Login kopieren

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());
    }
}
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage