我一直在java中进行继承。我的问题是,如果私人成员没有继承,他们怎么会在记忆中结束。内部有什么东西可以解决这个问题,或者只是隐藏/不可访问父类的公共成员函数。
这是java doc “子类不继承其父类的私有成员。但是,如果超类具有访问其私有字段的公共或受保护方法,则子类也可以使用这些方法。
嵌套类可以访问其封闭类的所有私有成员 - 包括字段和方法。因此,子类继承的公共或受保护嵌套类可以间接访问超类的所有私有成员。“
答案 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
。