Eu apenas comecei a aprender programação orientada a objeto da cabeça primeiro livro java.It disse que o polimorfismo me permite criar uma matriz do tipo superclasse e, em seguida, ter todas as subclasses como a matriz elements.But quando eu tentei escrever código usando o mesmo princípios que correu em erro dizendo error: cannot find symbol
que eu fiz as classes superclasse foi animais ea classe cão estendido a classe animal que tem um método buscar própria, mas quando eu referenciado a variável cão como animais não funcionou aqui está o código
A classe animal
public class animal{
String family;
String name;
public void eat()
{
System.out.println("Ghap Ghap");
}
public void roam()
{
System.out.println("paw paw");
}
}
O cão Classe
public class dog extends animal{
public void fetch(){
System.out.println("Auoooooooo");
}
}
A Classe Tester
public class tester{
public static void main(String args[]){
animal doggie = new dog();
doggie.fetch();
doggie.eat();
doggie.roam();
}
}
O erro
tester.java:4: error: cannot find symbol
doggie.fetch();
^
symbol: method fetch()
location: variable doggie of type animal
1 error
Ao usar polimorfismo, se você criar uma instância da subclasse e armazenar a sua referência em uma variável do tipo superclasse, você só pode chamar esses métodos na instância recém-criada, que estão presentes na super classe .
Em seu código, você criou uma instância de dog
classe e armazenados a sua referência no doggie
que é do tipo animal
(super classe de cão), em tal caso, você não pode chamar qualquer método na dog
instância de classe que não está disponível na animal
classe.
fetch
método não é definido na animal
classe, portanto, você obter o erro.
Solução
Ou defina o fetch
método na animal
classe
OU
mudança
animal doggie = new dog();
para
dog doggie = new dog();