这个问题是基于这样的概念,即当我将子类的引用存储到父类变量中时。并且,使用该变量,我调用了 Child-Parent 两个类中都存在的方法。这里应该调用子方法并且确实如此但是当我将引用作为参数传递时不会发生这种情况,为什么?
class Parent
{
public void show()
{
System.out.println("Parent");
}
}
class Child extends Parent
{
public void show()
{
System.out.println("Child");
}
}
public class Call {
public static void main(String args[])
{
Parent p=new Child();
p.show();
}
}
预期输出:“儿童” 实际输出:“儿童”[如预期]
但,
class Parent
{
public void show(Parent x)
{
System.out.println("Parent");
}
}
class Child extends Parent
{
public void show(Child x)
{
System.out.println("Child");
}
}
public class Call {
public static void main(String args[])
{
Parent p=new Child();
p.show(new Child());
}
}
为什么在这种情况下输出是“父母”?