继承Java私有成员

时间:2017-11-28 11:14:14

标签: java class inheritance

我一直在java中进行继承。我的问题是,如果私人成员没有继承,他们怎么会在记忆中结束。内部有什么东西可以解决这个问题,或者只是隐藏/不可访问父类的公共成员函数。

这是java doc “子类不继承其父类的私有成员。但是,如果超类具有访问其私有字段的公共或受保护方法,则子类也可以使用这些方法。

嵌套类可以访问其封闭类的所有私有成员 - 包括字段和方法。因此,子类继承的公共或受保护嵌套类可以间接访问超类的所有私有成员。“

2 个答案:

答案 0 :(得分:2)

它们在内存中,但您没有访问

示例:

class A
{
    private int foo;

    public int getFoo( ) { return foo; }

    ...
}

class B extends A
{
   ...
}

B类的每个实例实际上都包含一个整数foo

但是,您无法直接访问它,因为它已声明为private。您可以通过getFoo方法间接访问它,因为该方法是public

答案 1 :(得分:2)

您的对象中有Class引用。您的对象Class中包含父Class个引用。这就是私有方法仍在内存中的原因 - 它们被父类引用。

它们通常无法访问,您可以通过以下方式访问它们: Method.setAccessible()。您可以通过对父Method的反思来获得Class