为什么在Java中将类声明为静态?

Al2*_*2O3 15 java static class object

我见过类被声明为staticjava,但困惑:
由于类是用来创建对象,不同的对象有不同的内存分配.
然后"static"在声明一个类时使用什么?它是否意味着member variables全部static
这有意义吗?

Per*_*ror 28

首先,你不能制作顶级静态.你只能使一个嵌套类静态.通过使嵌套类静态,您基本上是说您不需要嵌套类的实例来从外部类/顶级类中使用它.

例:

class Outer {

static class nestedStaticClass {

//its member variables and methods (don't nessarily need to be static)
//but cannot access members of the enclosing class
}

public void OuterMethod(){
//can access members of nestedStaticClass w/o an instance
}
}
Run Code Online (Sandbox Code Playgroud)

另外,在内部类中声明静态字段是非法的,除非它们是常量(换句话说static final).由于静态嵌套类不是内部类,因此可以在此处声明静态成员.

类可以嵌套在嵌套类中吗?

总之,是的.看下面的内容Test,嵌套的内部类和嵌套的静态类都可以在'em中使用嵌套类.但请记住,您只能在顶级类中声明一个静态类,在内部类中声明它是非法的.

public class Test {
    public class Inner1 {
        public class Inner2 {
            public class Inner3 {

            }
        }
    }
    public static class nested1 {
        public static class nested2 {
            public static class nested3 {

            }
        }   
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 根据定义,内部类是非静态的. (6认同)
  • “通过将嵌套类设为静态,您基本上是在说您不需要嵌套类的实例来从外部类/顶级类中使用它”是不正确的。您不需要 *outer* 类的实例来创建 *static nested* 类的实例。“无法访问封闭类的成员”也是不正确的:它可以访问“静态”成员。 (2认同)

Jiv*_*ngs 6

嵌套类(类中的类)是唯一可以声明为静态的类.这样就不必实例化父类来访问嵌套类.

这个答案中有一些很好的示例代码