代码之家  ›  专栏  ›  技术社区  ›  Somesh Kumar

继承Java私有成员

  •  0
  • Somesh Kumar  · 技术社区  · 7 年前

    我一直在用java进行继承。我的问题是,如果私人成员没有被继承,那么他们怎么会在内存中结束呢。内部是否存在解决此问题的问题,或者它们只是隐藏/不可访问的,没有父类的公共成员函数。

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

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

    2 回复  |  直到 7 年前
        1
  •  2
  •   S.L. Barth is on codidact.com Monika Restecka    7 年前

    它们在记忆中,但你没有 通道 对他们来说。

    例子:

    class A
    {
        private int foo;
    
        public int getFoo( ) { return foo; }
    
        ...
    }
    
    class B extends A
    {
       ...
    }
    

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

    但是,您不能直接访问它,因为它是声明的 private . 您可以通过 getFoo 方法,因为那个是 public .

        2
  •  2
  •   alamar    7 年前

    您的对象具有 Class 参考。您的对象的 有父母 参考。这就是私有方法仍在内存中的原因——它们由父类引用。

    它们通常无法访问,您可以使用例如。 Method.setAccessible() . 你可以得到 Method 通过对家长的反思 .