静态内部 class 在 java 中扩展抽象外部 class

Static inner class extending abstract outer class in java

我今天看到这个模式,让我很困惑:

abstract class A {
    // does something

    static class B extends A {
        // does something as well
    }
}

我发现了两件奇怪的事情:

我还在纳闷为什么要用这样的模式? static class 在这种情况下是否意味着您可以静态访问它的构造函数,而无需创建 A 的实例,但实际上它在应用程序中并不是以任何方式唯一的?

编辑:

好的,所以我认为我对静态 classes 的理解来自 C#。我现在很清楚 java classes 的静态性。但是你什么时候会使用这样的模式(内部静态class扩展外部抽象)为什么

static class 无法访问外部 class 方法和变量,它们的关键字有点意味着它是一个单独的 class.

class Out {
     int i; void x(){}
     static class In() {
       i++; x(); // not valid instructions
     }
     class In2() {
       i++; x(); // valid instructions
     }
}

要实例化静态内部 class 您只需创建它的一个对象:

  Out.In obj = new Out.In();

非静态需要外部 class 实例化:

  Out o = new Out();
  Out.In2 obj = new o.In2();

(如果在 Out 字内实例化 In2,则这是隐含的)