class Parent{
private void method1(){
System.out.println("Parent's method1()");
}
}
class Test1 extends Parent{
public void method1(){
System.out.println("Test1's method1()");
}
public static void main(String[] args){
Test1 p=new Test1();
p.method1();
}
}
没有向上转型,但我覆写了父类的method1(),而且访问权限放宽了,却可以编译运行

解决方案 »

  1.   

    编译器对private ,final和static 方法都采用静态绑定。怎么可能存在子类方法覆写父类private方法这一说法呢?
      

  2.   

    楼主理解错了吧?
    “覆写的方法不能比父类被覆写的方法有更严格的访问权限”
    是指:父类为public,子类不能是private
    而不是父类是private,子类不能是publicprivate 比 public "严格"
      

  3.   

    楼上的正解楼主把Test1 p=new Test1();
    换成 Parent p = new Test1();试试看还能不能编译
      

  4.   

    补充 fytain关于“覆写的方法不能比父类被覆写的方法有更严格的访问权限”,fytain的解释是正确的,但这里父类的private的field或method是不能被子类继承或覆写的,fuyang_ywf已经在之前提到过这个问题@.@||~