关于类:继承Java私有成员

Inheritance Java private members

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

这里是Java文档"子类不继承其父类的私有成员。但是,如果超类具有用于访问其私有字段的公共或受保护方法,那么子类也可以使用这些方法。

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


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

它们通常是不可访问的,您可以使用Method.setAccessible()访问它们。通过对父级Class的反射,可以得到Method


它们在内存中,但您无法访问它们。

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
class A
{
    private int foo;

    public int getFoo( ) { return foo; }

    ...
}

class B extends A
{
   ...
}

实际上,类B的每个实例都包含一个整型foo,位于引擎盖下。

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