隠蔽されたフィールドへのアクセス
親は super でできるけど、その上にはいけるのだろうかと。
できるらしい。
class A { int a = 1; } class B extends A { String a = "B#a"; } class C extends B { A a = new A(); void hoge() { System.out.println(a); // C#a System.out.println(super.a); // B#a System.out.println(((B)(this)).a); // B#a System.out.println(((A)(this)).a); // A#a } } public final class Hoge { public static void main(String[] args) { C c = new C(); System.out.println(c.a); // C#a B b = c; System.out.println(b.a); // B#a A a = c; System.out.println(a.a); // A#a System.out.println(((B)(c)).a); // B#a System.out.println(((A)(c)).a); // A#a c.hoge(); } }
this をキャストするとか・・・・
その発想はなかったわ。