public class base{
public print(String str){
System.out.println(str);
printEnd();
}
public printEnd(){
System.out.println("Welcom to print. By base.");
}
}
public class printColor{
public printEnd(){
System.out.println("Welcome to print. By color.");
}
}
base printer = new printColor();
printer.print("A son calls parent.");
创建子类的对象。
用子类的对象调用父类的函数。
父类的函数中调用了在子类中复写的函数。
那么此函数是子类的实现。
在上述代码中将打印出color的printEnd。
但是如果将printEnd修改为private,则上述代码将打印出base的printEnd。
如果是protected类型的,那么也是打印color的printEnd。
这里需要研究下java继承和多态实现的内部机制,但是时间不允许,这里留下个疑问。
对于子类来说,public和protected都是可见的。但是父类的private则不可见。
既然子类对于private不可见,那么就不存在复写的问题。所以父类中调用的还是父类的实现。