class Example
{
{
new C().test();
}
}
class A {
public int x = 1;
}
class B extends A {
public int x = 2;
}
class C extends B {
public int x = 3;
public void test() {
//There are two ways to put x in C from the method test():
System.
out.
println("(Before) A.x = " + ((A
)this).
x); System.
out.
println("(Before) B.x = " + ((B
)this).
x); System.
out.
println("(Before) C.x = " + this.
x); ((A)this).x = 4;
System.
out.
println("(After) A.x = " + ((A
)this).
x); System.
out.
println("(After) B.x = " + ((B
)this).
x); System.
out.
println("(After) C.x = " + this.
x); }
}
Y2xhc3MgRXhhbXBsZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQluZXcgQygpLnRlc3QoKTsKCX0KfQoKY2xhc3MgQSB7CiAgICBwdWJsaWMgaW50IHggPSAxOwp9CgpjbGFzcyBCIGV4dGVuZHMgQSB7CiAgICBwdWJsaWMgaW50IHggPSAyOwp9CgpjbGFzcyBDIGV4dGVuZHMgQiB7CiAgICBwdWJsaWMgaW50IHggPSAzOwoKICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CiAgICAgICAgLy9UaGVyZSBhcmUgdHdvIHdheXMgdG8gcHV0IHggaW4gQyBmcm9tIHRoZSBtZXRob2QgdGVzdCgpOgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiKEJlZm9yZSkgQS54ID0gIiArICgoQSl0aGlzKS54KTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIihCZWZvcmUpIEIueCA9ICIgKyAoKEIpdGhpcykueCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIoQmVmb3JlKSBDLnggPSAiICsgdGhpcy54KTsKICAgICAgICAoKEEpdGhpcykueCA9IDQ7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIoQWZ0ZXIpIEEueCA9ICIgKyAoKEEpdGhpcykueCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIoQWZ0ZXIpIEIueCA9ICIgKyAoKEIpdGhpcykueCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIoQWZ0ZXIpIEMueCA9ICIgKyB0aGlzLngpOwogICAgfQp9Cg==