Accédant aux méthodes de sous-classe à partir de superclass
Dans la programmation orientée objet, l'héritage permet aux classes pour hériter des propriétés et des comportements à partir de leurs classes de parents. Cependant, lors de l'accès aux méthodes de sous-classes à partir d'une variable de superclasse, certaines limitations se produisent. ... } classe publique Cat étend le animal de compagnie { couleur de corde privée; public String getColor () {...} } classe publique Kennel { public static void main (String [] args) { Pet Cat = new Cat ("Feline", 12, "Orange"); Cat.getColor (); // Erreur du compilateur: getColor () non défini dans l'animal } }
Dans la classe de chenil, lorsqu'un objet CAT est affecté à une variable PET, seuls les membres définis dans PET sont accessibles. Cela inclut des méthodes comme getName () et Getage (), mais pas getColor ().
abstract public class Pet { ... } public class Cat extends Pet { private String color; public String getColor() { ... } } public class Kennel { public static void main(String[] args) { Pet cat = new Cat("Feline", 12, "Orange"); cat.getColor(); // Compiler error: getColor() not defined in Pet } }
1. Déclarer la variable en sous-classe:
Déclarez la variable comme sous-classe spécifique: chat cat = new Cat ("Feline", 12, "orange"); Cat.getColor (); // valide, getColor () est défini dans cat
2. Variable coulée à la sous-classe:
Cat cat = new Cat("Feline", 12, "Orange"); cat.getColor(); // Valid, getColor() is defined in Cat
projetez la variable dans une sous-classe connue ou attendue: Pet Cat = new Cat ("Feline", 12, "Orange"); ((Cat) chat) .getColor (); // valide, getColor () est accessible via le casting
Exemple d'implémentation:
Cat cat = new Cat("Feline", 12, "Orange"); cat.getColor(); // Valid, getColor() is defined in Cat
Voici une version corrigée de la classe de chenil: public classwell {{ public static void main (String [] args) { Chat chat = nouveau chat ("félin", 12, "orange"); System.out.println ("Couleur du chat:" Cat.getColor ()); } }
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3