acessando métodos de subclass de superclass
na programação orientada ao objeto, a herança permite que as classes herdem propriedades e comportamentos de suas classes parentais. No entanto, ao acessar métodos de subclasses de uma variável de superclasse, algumas limitações ocorrem. ... } classe pública Cat estende o PET { cor de corda privada; public string getColor () {...} } classe pública Kennel { public static void main (string [] args) { Pet Cat = New Cat ("Feline", 12, "Orange"); cat.getColor (); // Erro do compilador: getColor () não definido no PET } }
Na classe Kennel, quando um objeto CAT é atribuído a uma variável PET, apenas os membros definidos no PET estão acessíveis. Isso inclui métodos como getName () e getage (), mas não 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. Declare a variável como subclasse:
Declare a variável como a subclasse específica: cat gat = new Cat ("Feline", 12, "Orange"); cat.getColor (); // válido, getColor () é definido em cat
2. Variável de elenco para a subclasse:
Cat cat = new Cat("Feline", 12, "Orange"); cat.getColor(); // Valid, getColor() is defined in Cat
Faça a variável para uma subclasse conhecida ou esperada: pet gat = new Cat ("Feline", 12, "Orange"); ((Gato) gato) .getColor (); // válido, getColor () é acessível via Casting
Exemplo de implementação:
Cat cat = new Cat("Feline", 12, "Orange"); cat.getColor(); // Valid, getColor() is defined in Cat
aqui está uma versão corrigida da classe Kennel: classe pública Kennel { public static void main (string [] args) { Gato gato = novo gato ("felino", 12, "laranja"); System.out.println ("cor de gato:" cat.getColor ()); } }
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3