请问这个输出的为什么是private f() 而不是public f()
因为你是以基类类型调用的方法
要想调用public f,那么2个改法
强制类型转换成派生类后再调用
将基类的f定义成virtual的,派生类加上@override
public class VerifyPolymorphism {
public static void main(String[] args) {
Father son = new Son();
//验证父类私有方法是否被覆盖
son.getPrivateMethod();
Son son1 = new Son();
son1.privateMethod();
}
}
class Father{
private void privateMethod(){
}
public void getPrivateMethod() {
System.out.println("Father privateMethod.");
}
}
class Son extends Father{
public void privateMethod(){
System.out.println("Son privateMethod.");
}
}
运行结果:
Father privateMethod.
Son privateMethod.
通过运行结果,我们发现,父类私有方法也是不能够覆写的,也不能实现多态。