class Father
{
private int b = 1;
private void method1()
{
System.out.println("Father");
}
}
class Son extends Father
{
public static void main(String args [])
{
new Son().method1();
}
}在编译的时候出现了问题,说Son没有定义这个方法?为什么?子类应该继承了这个父类的私有方法,如果出现错误的话,也应该是子类无法调用父类的私有方法,而不是没有定义。我猜想是java的内存分配中,子类对象虽然含有父类对象,但是父类的方法区中似有方法对子类是不可见的,所有才会出现这个问题,但这只是我的猜测,还想各位帮帮我。
由于没有积分了,所以无法给帖子加分,还请见谅。

解决方案 »

  1.   

    private是最高级的保密,就算子类都不可以访问,只能是本类才可以访问,如果要访问父类的私有变量或者私有方法,请使用default级别以上的控制访问符的接口方法访问,如果在父类中定义一个public int getB()
        {
            return this.b;
        }
      

  2.   

    子类无法访问private
    可以改成protect
      

  3.   

    建议楼主多看点Java基础,私有的东西是不能继承的
      

  4.   

    子类和父类在同一个包中,子类可以访问继承父类的public protected 和默认权限的成员变量和方法,子类和父类不在同一个包类则子类只可以访问父类的public权限的成员变量和成员方法,你可以自己写一个类测试一下