【发布时间】:2017-08-12 05:31:42
【问题描述】:
这个问题是基于当我存储孩子的引用时的概念 类到父类变量中。并且,使用该变量,我调用两个类中存在的方法 Child-Parent.Here 子方法应该被调用,但是当我将引用作为参数传递时不会发生这种情况,为什么?
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());
}
}
为什么在这种情况下输出是“Parent”?
【问题讨论】:
标签: inheritance parameter-passing overriding object-reference reference-parameters