Maison > Java > javaDidacticiel > Comment puis-je accéder aux méthodes de sous-classe à partir d'une superclasse en Java ?

Comment puis-je accéder aux méthodes de sous-classe à partir d'une superclasse en Java ?

Barbara Streisand
Libérer: 2024-12-07 10:04:12
original
706 Les gens l'ont consulté

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

Appel de méthodes de sous-classe à partir d'une superclasse

Problème

En Java, lors de l'héritage de classes et de la création de sous-classes, il est courant de rencontrer des problèmes d'accès aux méthodes spécifiques aux sous-classes au sein de la superclasse. Cela se produit lorsque vous instanciez un objet de sous-classe et l'attribuez à une variable de superclasse.

Solution

Pour résoudre cette limitation, vous pouvez utiliser l'une des méthodes suivantes :

  • Déclarez la variable comme dérivée class :
Cat cat = new Cat("Feline", 12, "Orange");
cat.getName(); // OK
cat.getColor(); // OK (getColor() is in Cat)
Copier après la connexion
  • Convertissez la variable dans le type de béton souhaité :
Pet pet = new Cat("Feline", 12, "Orange");
((Cat)pet).getName(); // OK
((Cat)pet).getColor(); // OK (explicitly treated as Cat)
Copier après la connexion

Lorsque vous effectuez une distribution, vous traitez temporairement l'objet comme une instance du type spécifié. Cela vous permet d'accéder aux membres et aux méthodes spécifiques à la sous-classe.

Exemple

Considérez la classe Main modifiée suivante :

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());
    }
}
Copier après la connexion

Dans cet exemple, la classe Main récupère avec succès la race du chien à l'aide d'un plâtre.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal