★★Java質問・相談スレッド184★★ (371レス)
前次1-
抽出解除 レス栞

90
(1): (テテンテンテン MMe6-WNmf) 2022/12/22(木)12:07:43.69 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:33.69 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());
でも追加してみればわかるかと
128
(1): (テテンテンテン MM0e-g+Li) 2023/02/25(土)00:12:07.69 ID:+Qy/IqxpM(1)調 AAS
Byte.parseByte("0A", 16);
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.020s