この質問はばかげているように聞こえるかもしれませんが、頭の中で明確にする必要があります。
class J_SuperClass {
void mb_method() {
System.out.println("J_SuperClass::mb_method");
}
static void mb_methodStatic() {
System.out.println("J_SuperClass::mb_methodStatic");
}
}
public class J_Test extends J_SuperClass {
void mb_method() {
System.out.println("J_Test::mb_method");
}
static void mb_methodStatic() {
System.out.println("J_Test::mb_methodStatic");
}
public static void main(String[] args) {
J_SuperClass a = new J_Test();
a.mb_method();
a.mb_methodStatic();
J_Test b = new J_Test();
b.mb_method();
b.mb_methodStatic();
}
}
出力は次のとおりです。
J_Test::mb_method
J_SuperClass::mb_methodStatic
J_Test::mb_method
J_Test::mb_methodStatic
動的バインディングは実行時に発生し、静的バインディングはコンパイル時に発生することを知っています。また、動的バインディングの場合、オブジェクトの実際の型によって、呼び出されるメソッドが決まります。私の質問は、上記のコードでは、「静的」という言葉が静的バインディングを引き起こし、オブジェクトの DECLARED 型がどのメソッドが呼び出されるかを決定するということですか?