class a extends b {
void h() {
System.out.println("class a");
}
public static void main(String[]args) {
b x = new a();
c y = new b();
c z = new a();
x.h(); //output class a
y.h(); //output class b
z.h(); //output class a
}
}
class b extends c {
void h() {
System.out.println("class b");
}
}
class c {
void h() {
System.out.println("class c");
}
}
どのメソッドを呼び出すかを調べる優先順位は何ですか?動的ディスパッチを使用するときにどのメソッドを呼び出すかをJVMが決定する方法については混乱しています。この場合の出力は動的ディスパッチの場合、オーバーライドされたメソッドの呼び出しはどのように行われますか
class a
class b
class a
と私はクラスからオーバーライドされたメソッドを削除すると出力が使用するクラスがインスタンス化タイプに依存
class b
class b
class b
スペースを少しきれいにしてください。 –
このコードはコンパイルされません。「b x = new a();」は不正です。 – Puppy
私はちょうどeclipseから貼り付けたコードをコピーしてください... – Nav