是这样的:public class shiyan {



public shiyan(){
jiao("");
}

 void jiao(String a){
System.out.println("叫!");
} }
public class shiyan2 extends shiyan {
public void jiao(String a) {
System.out.println("疯狂的叫!");
}

public static void main(String [] args){

shiyan2 shi=new shiyan2();
shi.jiao("");
}


}这样显示输出的是:
疯狂的叫!
疯狂的叫!而把父类中的jiao方法改成private,就显示:
叫!
疯狂的叫!请问高手这是为什么呢?

解决方案 »

  1.   

    首先,在子类构造时,会默认调用父类的无参构造函数。第一种情况是子类重写了父类的jiao方法,在父类构造时运行时绑定调用的是重写后的jiao方法;当你把父类的方法设为私有的时候,该方法只对本类可见,子类就不能重写父类的方法了,所以调用的是父类中的jiao方法。
      

  2.   

    private,“friendly”,protected,public的问题,几乎所有书上都有讲,private是只能在本类中使用,子类无法继承。
      

  3.   

    如果是属性或方法是private的话,其他类是无法访问的,也就不能覆写了。
      

  4.   

    如果是内部类的话,那么他可以访问private