gpt4 book ai didi

java - 为什么我们在Java中使用父类引用来重写?

转载 作者:行者123 更新时间:2023-12-02 03:42:48 24 4
gpt4 key购买 nike

class Father {
void name() {
System.out.println("This is father");
}

void details() {
System.out.println("He is the head of the family");
}

void traits() {
System.out.println("He loves everyone");
}
}

class Son extends Father {
@Override
void name() {
System.out.println("This is the son");
}

@Override
void details() {
System.out.println("He is the youngest one in the family");
}
}


public class overridingDoubt {
public static void main(String... args) {

System.out.println("Father type ref");
System.out.println("******************");
Father obj = new Son();//This raises my doubt
obj.name();
obj.details();
obj.traits();

System.out.println("\n \n Son type ref");
System.out.println("******************");
Son obj1 = new Son();
obj1.name();
obj.details();
obj.traits();
}
}

这两个引用文献也取得了相同的结果。我只想知道现实生活中使用父类引用至关重要的场景。

有人告诉我一个场景,我们希望将所有对象存储在列表中使用父类引用可以让我们实现这一点。

最佳答案

如果您想使用泛型存储项目,或者您想定义一个可以是任何子类的类型,具体取决于代码。如果您想检查所有对象是否都是给定父类的实例等。

例如如果您只想要一个人员列表,可以是您可以拥有的任何扩展 Person 的类

List<Person> list = new ArrayList<Person>(); 

然后在你的代码中说你想要有一个父亲和两个儿子,他们每个人都扩展 Person 你可以将它们添加到列表中

list.add(new Father()); //Etc. 

然后,您可以遍历列表并打印详细信息。

for(Person p: list){
p.details();
}

关于java - 为什么我们在Java中使用父类引用来重写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36653201/

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