Olá galera estou estudando pra proca SCJP
e parece que estou entendo herança conforme exemplo abaixo pois quando estou entendo como usa a formas de instanciar
o objeto e ler os metodos do pai e do filho .
Ai aparece varios formas de instanciar e fico sem entender…
Gostaria de entender como faço pra ler do pai para filho e a forma que tem que ser para visualizar um codigo e ter a certeza que
estou lendo certo , que pode ou não pode…Se alguém puder me ajudar agradeceria…
Tem alguma receita como :(só essas são corretas) gostaria de saber uma receita de como é correto???
Animal a = new Dog();
Dog d = new Dog();
Dog d1 = (Dog) a;
quando uso o comando :
Animal a = new Dog(); //vejo o metodo Animal//ok
Dog d1 = new Dog(); //vejo o metodo Animal e Dog
d1.doAnimalStuff(); //compila e executa -ok
d1.doDogStuff();//compila e executa -ok
Dog d = (Dog) a;
d.doAnimalStuff(); //compila e executa ok
d.doDogStuff(); //compila e executa ok
Dog d2 = new Animal(); //não compila pois filho não ve o pai
mas fazendo Dog d2 = (Dog) new Animal(); //compila mas da erro
d2.doDogStuff()
d2.doAnimalStuff();
Exception in thread “main” java.lang.Error: Unresolved compilation problem:
Syntax error, insert “;” to complete Statement
at certificacao.licão_5_1.Dog.main(Dog.java:21)
public class Animal {
void doAnimalStuff(){
System.out.println("Animal");
}
}
public class Dog extends Animal {
void doDogStuff(){
System.out.println("Dog");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Animal a = new Dog(); //vejo o metodo Animal
Dog d = (Dog) a;
d.doAnimalStuff(); //compila mas da erro
d.doDogStuff(); //compila mas da erro
}
}
