我见过 class 被声明为static
in java
,但很困惑:
由于 class 用于创建对象,并且不同的对象具有不同的内存分配。
那么"static"
在声明一个类的时候是用来做什么的呢?这是否意味着member variables
全部static
?
这有意义吗?
问问题
29785 次
3 回答
30
首先,您不能使顶级类静态。您只能将嵌套类设为静态。通过使嵌套类静态,您基本上是在说您不需要嵌套类的实例来从外部类/顶级类中使用它。
例子:
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
}
}
还要补充一点,在内部类中声明静态字段是非法的,除非它们是常量(换句话说,static final
)。由于静态嵌套类不是内部类,您可以在此处声明静态成员。
类可以嵌套在嵌套类中吗?
一句话,是的。看下面Test
,嵌套的内部类和嵌套的静态类都可以有嵌套类。但是请记住,您只能在顶级类中声明静态类,在内部类中声明它是非法的。
public class Test {
public class Inner1 {
public class Inner2 {
public class Inner3 {
}
}
}
public static class nested1 {
public static class nested2 {
public static class nested3 {
}
}
}
}
于 2013-03-16T10:53:38.683 回答
6
嵌套类(类中的类)是唯一可以声明为静态的类。这样就不必实例化父类来访问嵌套类。
这个答案中有一些很好的示例代码
于 2013-03-16T10:54:13.733 回答
2
它只是描述了这个类与包含类的关系。
内部类是在另一个类的范围内定义的类。内部类的实例附加到容器类的特定实例(创建它们的实例)。
静态嵌套类是嵌套类,但定义为静态的。像静态成员一样,它们与特定实例无关;它们只是属于包含类。在嵌套类中,您不能引用包含类的非静态成员/方法,因为没有与它们关联的特定实例。
于 2013-03-16T10:58:28.503 回答