public class Aa { //父类中存在一个私有方法test private void test() { System.out.print("jcb"); } } public class Jicheng extends Aa{ //子类中将test方法重写为public型 public void test() { System.out.print("jcsd"); } } public class Test { public static void main(String[] args) { Jicheng jc = new Jicheng (); //jc实例调用test()失败 jc.test();//这里是报错的 } }
Q1.为何jc无法调用Jicheng类中的test方法?
Q2.Jicheng类中的test方法是重写了Aa中的test()方法么?如果是,为何没有@Override注解?
Private 不能被重写,只能相同级别或低级别的的重写
继承不能继承父类中的private类型的成员变量和成员函数,所以“Jicheng” 中并没有继承Aa 的test()方法
Jicheng jc = new Jicheng ();
jc.test();//这里是报错的
那是什么原因导致Jicheng类的实例jc无法调用test()方法呢?
可以调用的,你的子类并没有重写父类的方法,子类中的test方法与父类中的test并不冲突,因为父类的私有成员是不能被继承的。除非是public 修饰的。