【发布时间】:2017-10-24 16:15:16
【问题描述】:
考虑以下几点:
class Parent {
public void print(Object s) {
System.out.println("I am inside Parent Object Method.");
}
}
public class Child extends Parent{
public void print(String s) {
System.out.println("I am inside Child String Method.");
}
public static void main(String arg[]) {
Parent a = new Child();
a.print(null);
}
}
输出:
I am inside Parent Object Method
这里 JVM 调用父方法代替子方法,而不管“应该调用更具体的方法”的逻辑是否模糊。
在java中这个实现的原因是什么?
【问题讨论】:
-
怎么模棱两可?你怎么能用接受字符串的方法调用
a.print(1)? -
将
@Override添加到 Child 的 print() 方法中。 -
将 1 更改为 null 后,您的代码将打印“我在子字符串方法中。”。
-
编辑了问题并传递了
null,然后也传递了它的调用父方法。
标签: java inheritance