我在 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");
}
}
在这里,我重写了两个方法,当使用超类引用时,调用的方法取决于在运行时确定的对象类型,并且是动态多态性的一个示例。
但是,如果我对子类对象使用子类引用并覆盖该方法,那么被覆盖的对象将在运行时得到解决,并且是动态多态性的一种情况,或者仅在编译时解决,因为对象类型和引用是相同的类型并且不会保持动态多态的情况?
重写和动态多态性总是同时发生吗?