为什么我们使用 Parent Class 引用来覆盖 Java?
Why do we use Parent Class reference for overriding in Java?
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 class 参考是最重要的。
有人告诉我一个场景,我们希望将所有对象存储在一个列表中
并使用 Parent class 参考可以让我们实现这一目标。
如果您想使用泛型存储项目,或者如果您想定义一个可以是任何子项的类型 class,具体取决于代码。如果你想检查所有对象都是给定父对象的实例 class 等
例如如果你只是想要一个人的列表,谁可以是任何 class 扩展的人,你可以有
List<Person> list = new ArrayList<Person>();
然后在你的代码中说你想要一个父亲和两个儿子,他们每个人都继承了 Person 你可以将它们添加到列表中
list.add(new Father()); //Etc.
例如,您可以遍历打印详细信息的列表。
for(Person p: list){
p.details();
}
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 class 参考是最重要的。
有人告诉我一个场景,我们希望将所有对象存储在一个列表中 并使用 Parent class 参考可以让我们实现这一目标。
如果您想使用泛型存储项目,或者如果您想定义一个可以是任何子项的类型 class,具体取决于代码。如果你想检查所有对象都是给定父对象的实例 class 等
例如如果你只是想要一个人的列表,谁可以是任何 class 扩展的人,你可以有
List<Person> list = new ArrayList<Person>();
然后在你的代码中说你想要一个父亲和两个儿子,他们每个人都继承了 Person 你可以将它们添加到列表中
list.add(new Father()); //Etc.
例如,您可以遍历打印详细信息的列表。
for(Person p: list){
p.details();
}