【发布时间】:2013-02-16 13:34:23
【问题描述】:
我在 A 类中创建了两个方法,在 B 类中被覆盖,如下所示。我有一些与动态多态性和覆盖有关的问题。
这是我的 B 类扩展 A 类的代码。
public class A {
public void methoda()
{
System.out.println("a");
}
public void methodb()
{
System.out.println("aaa");
}
public static void main(String[] args) {
B a =new B();
A b=a;
b.methoda();
}
}
public class B extends A{
@overrides
public void methoda()
{
System.out.println("A");
}
@overrides
public void methodb()
{
System.out.println("g");
}
}
这里我重写了两个方法,当使用超类引用时,调用的方法取决于运行时确定的对象类型,是动态多态性的一个示例。
但是,如果我对子类对象使用子类引用并覆盖该方法,那么被覆盖的将在运行时得到解决,并且是动态多态的情况,或者仅在编译时解决,因为对象类型和引用是相同的类型和不保留动态多态的情况吗?
重写和动态多态是否总是同时发生??
【问题讨论】:
标签: java reference polymorphism overriding