class Super {
private void print(){
System.out.println("HELLO") ;
}
public void fun(){
this.print() ;
}
}
class Sub extends Super{
void print(){
System.out.println("WWW") ;
}
}
public class TestExtends {
public static void main(String arg[]){
new Sub().fun() ;
}
}
答案为:HELLOthis.print()方法不是先在本来寻找print()方法,即:
       void print(){
  System.out.println("WWW") ;
     }方法吗?
为什么还要去父类寻找呢?

解决方案 »

  1.   

    1、你调用的fun  Sub类里没有;
    1、Super中的fun 能够寻找到Sub中的print吗?不能!
    2、你说的 在本类寻找,这个本类 该做和解???
      

  2.   

    因为父类的print()方法是private, 不能被覆盖。
      

  3.   

     因为你所写的两个print()方法之间不构成重写的关系,
    父类中的print()方法是私有的,你父亲私有的东西你能拿去修改了吗,两者没有重写关系
    所以在你调用父类的fun()方法的时候,方法内部默认调用的是父类的  private void print()
    他只会认识父类的print()
    如果想要调用子类的print(),请修改父类的访问权限
    子类的访问权限低于父类
      

  4.   

    刚刚看了一道和这道类似的题.这题多了个private就变了答案