将嵌套类继承到子类中

san*_*hat 5 java inheritance nested-class

当我正想通过这个文章,下部分私人会员超类中,我看到了这条线

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

我的问题是我们如何才能直接访问NestedBaseDerived(就像我们可以访问任何publicprotected字段)?

如果有一种方法,怎么能Derived访问p它的私有字段Base通过Nested

public class Base {

    protected int f;
    private int p;

    public class Nested {

        public int getP() {
            return p;
        }
    }
}

class Derived extends Base {

    public void newMethod() {
        System.out.println(f); // i understand inheriting protected field

        // how to access the inherited Nested class here? and if accessed how to retrieve 'p' ?
    }

}
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的时间和精力!

But*_*ass 3

Base.Nested theClassBro= new Base.Nested();
Run Code Online (Sandbox Code Playgroud)

或者对于派生类,这应该有效:

Derived.Nested theClassBro= new Derived.Nested();
Run Code Online (Sandbox Code Playgroud)

我不确定你是否需要使用 super 关键字

  • 请注意,“Nested”依赖于“Base”的实例,这就是“Nested”实例可以访问“Base”内容的原因。`Base` 实例化在 `new Base.Nested()` 上是隐式的。IE。你可以写:`Base myBase = new Base(); Base.Nested theClassBro = myBase.new Nested();` (3认同)