今日の comp sci レクチャーで継承について説明し、他のクラスからのメソッドへのアクセスについて話しました。私のクラスメートの 1 人が、サブサブクラスが最上位の親クラスのメソッドにアクセスする方法を尋ねました。私の教授も同様に興味があり、次のようなことを提案しました。
super.super.toString();
機能する可能性がありますが、機能しません。好奇心旺盛で、自分でこれを理解しようとしたところ、次のようになりました。
public class A {
public static void main(String[] args){
B b = new B();
C c = new C();
System.out.println(b.toString());
System.out.println(c.toString());
}
public String toString(){
return "Class A";
}
}
class B extends A {
public String toString(){
return "Class B";
}
}
class C extends B {
public String toString(){
return A.class.toString();
}
}
これはうまくいきましたが、さまざまなことをテストしているときに、これに出くわしました:(これはすべてクラスCで行われます)
super.toString();
次と同じことをしているようです:
B.class.toString();
私の質問は、2つに違いがあるのですか、それともまったく同じですか? また、この上の私のコードでは、サブサブクラスからメソッドを呼び出す適切な方法ですか?