在 Java(和 Android)中,使用static class
和final class
声明是什么?
我的问题不是关于静态实例,而是关于类声明,例如,
static class StaticClass {
//variables and methods
}
和
final class FinalClass {
//variables and methods
}
谢谢,
静态嵌套类
与类方法和变量一样,静态嵌套类与其外部类相关联。和静态类方法一样,静态嵌套类不能直接引用在其封闭类中定义的实例变量或方法:它只能通过对象引用来使用它们。注意:静态嵌套类与其外部类(和其他类)的实例成员交互,就像任何其他顶级类一样。实际上,静态嵌套类在行为上是一个顶级类,为了方便打包,它已经嵌套在另一个顶级类中。
使用封闭类名访问静态嵌套类:
OuterClass.StaticNestedClass
例如,要为静态嵌套类创建对象,请使用以下语法:
OuterClass.StaticNestedClass nestedObject =
new OuterClass.StaticNestedClass();
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
最后的课程
声明为 final 的类不能被子类化。这特别有用,例如,在创建像 String 类这样的不可变类时。
http://docs.oracle.com/javase/tutorial/java/IandI/final.html
你做了一个最终的类,所以它不能被扩展。通常,如果您正在创建库(或处理大型项目的一部分),那么您的客户无法扩展类并修改现有行为。在您自己的程序中,几乎没有理由将课程定为最终课程,除非它是一个大型程序并且您可能会无意中忘记事情。
静态内部类用于逻辑上属于外部(包含)类但不依赖于外部类状态的事物。例如,您可以有一个 Parser 类和一个内部 Parser.Listener 类。通常,如果您决定拥有一个内部类,首先尝试将其设为静态,如果可能的话,以简化事情。
您可以不使用 final 和 static 内部类,然后根据经验,您会发现它们很有用。
其他类不能扩展最终类示例字符串是最终类,因此您不能扩展此类。您不能将“顶级”类声明为静态。你只能有一个带有修饰符'static'的内部类。静态内部类只访问外部类的静态成员
你不能标记一个类静态?是的,如果是嵌套类 否,如果是普通类。如果您将嵌套类标记为静态,它将作为完全标记的类工作,只需使用 classname.staticClassNmae 来访问它。
如果你标记一个类 final ,它就不能被继承,这是 java中这个String类的一个很好的例子。