★★Java質問・相談スレッド184★★ (371レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
90
(1): (テテンテンテン MMe6-WNmf) 2022/12/22(木)12:07 ID:syRoAR41M(1/2)調 AAS
各メソッドを
int m1() { // class A
System.out.println("A.m1()");
return 100;
}
の様にして、実行してみれば一目瞭然
System.out.println(new A().m2());
->
A.m2()
A.m1()
200

System.out.println(new B().m2());
->
B.m2()
A.m2()
B.m1()
A.m1()
250
91
(1): (テテンテンテン MMe6-WNmf) 2022/12/22(木)12:25 ID:syRoAR41M(2/2)調 AAS
まあ少し分かりにくいんだけど、
クラスBのインスタンスを生成してメソッドB.m2()からクラスAのメソッドA.m2()が"super.method名()"で呼ばれたとして、
その時、クラスAのメソッド(A.m2())中でもthisはやっぱり、当然に、クラスBのインスタンスのままなんですよ(勝手にインスタンスが生まれ変わったりはしない)
で、クラスBのインスタンスに対してm1()呼び出しをするので、B.m1()が呼ばれます

先ほどの様に、各メソッドに
System.out.println(this.getClass().getName());
でも追加してみればわかるかと
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.026s