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.
Pour résoudre cette limitation, vous pouvez utiliser l'une des méthodes suivantes :
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)
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.
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()); } }
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!