以下に示すように、クラスAで2つのメソッドを作成し、クラス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");
}
}
ここでは、2つのメソッドをオーバーライドしています。スーパークラス参照が使用される場合、呼び出されるメソッドは、実行時に決定されたオブジェクトのタイプに依存し、動的ポリモーフィズムの例です。
しかし、サブクラスオブジェクトにサブクラス参照を使用してメソッドをオーバーライドすると、オーバーライドは実行時に解決され、動的ポリモーフィズムの場合、またはオブジェクトタイプと参照が同じタイプであり、動的多型の場合?
オーバーライドと動的ポリモーフィズムは常に同時に発生しますか?