this,super
请看这段代码,并回答问题,谢谢!
public class ShadowTest {
public static void main(String s[]){
new STChild().demo();
}
}
class STGrandParent {
double wealth = 50000.00;
public double getWealth() {
System.out.println("GrandParent-" + wealth);
return wealth;
}
}
class STParent extends STGrandParent {
double wealth = 100000.00;
public double getWealth() {
System.out.println("Parent-" + wealth);
return wealth;
}
}
class STChild extends STParent {
double wealth = 200000.00;
public double getWealth() {
System.out.println("Child-" + wealth);
return wealth;
}
public void demo() {
getWealth(); // Calls Child method
super.getWealth(); // Calls Parent method
super.super.getWealth(); // 1 怎样才能调用父类的父类的方法?
((STParent)this).getWealth(); // 2 。 为什么调用的是本类的而不是父类的方法?
((STGrandParent)this).getWealth(); // 3。为什么调用的是本类的而不是父类的父类的方法?
System.out.println(wealth);
System.out.println(super.wealth);
System.out.println(((STParent)(this)).wealth); // 4。为什么调用的是父类的属性?
System.out.println(((STGrandParent)(this)).wealth); //5。为什么调用的是父类的父类的属性?
}
}