Superclasse e Subclasse em Java [duplicado]
Esta pergunta já tem uma resposta aqui:
O que significa “programar para uma interface”? 31 respostasPara você, isso pode ser muito simples, mas não tenho idéia de qual é a diferença. Eu só quero saber a diferença entre esses dois códigos. Suponha que eu tenha alguns códigos, conforme descrito abaix
A primeira classe é Animal, que será a Superclasse
public class Animal {
private String name;
private int weight;
private String sound;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setWeight(int weight){
if(weight > 0){
this.weight = weight;
} else {
System.out.println("Weight must be bigger than 0");
}
}
public int getWeight(){
return weight;
}
public void setSound(String sound){
this.sound = sound;
}
public String getSound(){
return sound;
}
}
A segunda classe é Dog, que estende a classe Animal
public class Dog extends Animal {
public void digHole(){
System.out.println("Dig a hole");
}
public Dog(){
super();
setSound("bark");
}
}
A última classe é o WorkWithAnimals que imprimirá a saída
public class WorkWithAnimals {
public static void main(String args[]){
Dog fido = new Dog();
fido.setName("Dadu");
System.out.println(fido.getName());
fido.digHole();
fido.setWeight(-1);
}
}
Minha pergunta é: qual é a diferença entre Animal fido = new Dog () e Dog fido = new Dog ()?
Desde que o Dog já estende Animal, por que precisamos escrever o código como Animal fido = new Dog (
Ambos imprimem o mesmo resultado, não sã