这是我的示例程序.
class parent
{
void display(int i)
{
System.out.println("parent");
}
}
class child extends parent
{
void display(byte i) //Line 0
{
System.out.println("child");
return;
}
}
class impl
{
public static void main(String...args)
{
parent p = new parent();
p.display(5); //Line 1
child c = new child();
c.display(3); //Line 2
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的输出.
varun@\:~/Desktop/JavaFiles$ java impl
parent
parent
Run Code Online (Sandbox Code Playgroud)
我理解第1行从父级调用display()方法并输出预期的"parent".
但是我不明白为什么第2行从父节点而不是子节点调用display(),即使我没有使用多态初始化(只是常规初始化子类是我做的).
该display(byte)在方法child不会覆盖display(int)的方法parent.并且由于默认情况下为3 int,因此您将调用显示方法parent.
尝试 c.display((byte)3)