Суперкласс и Подкласс в Java [дубликаты]
На этот вопрос уже есть ответ:
Что значит «программировать на интерфейс»? 31 ответДля тебя это может быть очень просто, но я понятия не имею, в чем разница. Я просто хочу узнать разницу между этими двумя кодами. Предположим, у меня есть несколько кодов, как описано ниже.
Первый класс - это Animal, который станет Суперклассом
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;
}
}
Второй класс - собака, которая расширяет класс Animal
public class Dog extends Animal {
public void digHole(){
System.out.println("Dig a hole");
}
public Dog(){
super();
setSound("bark");
}
}
Последний класс - это WorkWithAnimals, который будет печатать вывод
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);
}
}
Мой вопрос: в чем разница между Animal fido = new Dog () и Dog fido = new Dog ()?
Так как Dog уже расширяет Animal, почему мы должны писать код, подобный Animal fido = new Dog ()?
Оба из них выводят один и тот же результат, не так ли?