/* 注释中 是问题
main方法中 s.fun2();的结果是输出: father
Child s。在Child中找不到fun2()方法,就去它的父类Father中去找,
找到了fun2()方法,那么就调用。
fun2()方法体中有
this.print();
这么一条语句,其中:
this 指的是什么?
print() 为什么会调用Father类中的print()方法。
*/
class Father {
private void print() {
System.out.println("Father");
}
public void fun2() {
//代表本类当前对象的引用
this.print(); // 调用print()方法 Father f = new Child();
//Father f = new Son();
}
};
class Child extends Father { // 定义继承关系
void print() { // 并没有重写父类的print方法。private void print(){}
System.out.println("Child");
}
public void fun() {
this.print(); //Child c = new Son()
}
};
class Son extends Child {
void print() {
System.out.println("Son");
}
public void fun0() {
this.print(); // Son s = new Son()
}
};
public class OverrideDemo_Zxf {
public static void main(String args[]) {
Child c = new Child();
c.fun(); //"Child"
c.fun2(); // father
Father f = new Father();
f.fun2(); //"Father"
System.out.println("-----------------------");
Son s = new Son();
s.fun0();// son son类自己已经重写child类的print方法
s.fun();// son son类自己已经重写child类的print方法
s.fun2();// father ?