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();
}
}
这两个参考文献也实现了相同的结果。 我只是想知道一个真实的场景,使用Parent类引用是至关重要的。
我被告知一种情况,我们希望将所有对象存储在List中 并且使用Parent类引用可以让我们实现它。
答案 0 :(得分:2)
如果要使用泛型存储项目,或者要定义可能是任何子类的类型,具体取决于代码。如果要检查所有对象是否是给定父类的实例等。
E.g。如果您只是想要一个人员列表,那么谁可以是任何可以扩展人员的类
List<Person> list = new ArrayList<Person>();
然后在你的代码中说你想要一个父亲和两个儿子,每个人都扩展了人,你可以将这些添加到列表中
list.add(new Father()); //Etc.
然后你可以例如遍历列表打印细节。
for(Person p: list){
p.details();
}