私はJavaポリモーフィズムに混乱しています。動的メソッドバインディングでは、jvmは実行時にどのクラスメソッドを呼び出す必要があるかを決定します。A、B、Cの3つのクラスがあるとします。
class A{
int get(){
return 10;
}
int getParent(){
return 10;
}
}
class B extends A
{
int get(){
return 20;
}
}
public class C
{
public static void main(String args[])
{
A a = new A();
A a1 = new B();
System.out.println(a.get());/////////////////////////LINE1
System.out.println(a1.get ());////////////////////////LINE2
System.out.println(a.getParent());////////////////////////LINE3
}
}
コンパイル時とランタイムバインディングで1行目と3行目で混乱が生じています。3行目ではa.getParent()であり、このメソッドは親クラスにのみ存在するため、実行時に何を決定する必要があります。
1行目では、参照とオブジェクトの両方が同じクラスからのものであるため、ここでも何を決定する必要があります。
ランタイムとコンパイル時のバインディングがどのように機能するかについての適切なリンクを送ってください。