gpt4 book ai didi

java - Java中的父类(super class)和子类

转载 作者:行者123 更新时间:2023-11-30 03:08:11 25 4
gpt4 key购买 nike

对你来说,这可能很简单,但我不知道有什么区别。我只想知道这两个代码之间的区别。假设我有一些如下所述的代码。

第一个类是 Animal,它将成为父类(super class)

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;
}
}

第二个类是 Dog,它扩展了 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() ?

它们都打印相同的结果,不是吗?

最佳答案

“Animal”类不会包含 digHole,因此您应该会收到编译时错误;因此:

Animal fido = new Dog();
fido.dighole(); //<--compile time error

然而,

Dog fido = new Dog();
fido.dighole();

会好的。

关于java - Java中的父类(super class)和子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34225963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com