我一直在 java中的static和final关键字之间感到困惑。 __
static
final
它们有何不同?
首先让我们看一下静态变量和静态方法。
Class.variable
Class.methodName()
this
super
Java还具有“静态嵌套类”。静态嵌套类只是一个没有隐式引用外部类实例的类。
静态嵌套类可以具有实例方法和静态方法。
Java中没有顶级静态类。
主要方法是static因为在进行任何实例化之前,应用程序必须可以访问它才能运行。
一个final类不能被子类化。这样做是出于安全和效率的考虑。因此,许多Java标准库类是final,例如java.lang.System和java.lang.String。final类中的所有方法都是隐式的final。
java.lang.System
java.lang.String
甲final方法不能由子类覆盖。这用于防止子类的意外行为更改可能对类的功能或一致性至关重要的方法。
一个final变量只能要么通过初始化或赋值语句初始化一次。它不需要在声明时进行初始化:这称为blank final变量。必须在声明该类的每个构造函数的末尾明确分配该类的空白最终实例变量;类似地,必须在声明它的类的静态初始化器中明确分配一个空白的最终静态变量;否则,两种情况下都会发生编译时错误。
blank final
在方法的主体中定义匿名内部类final时,可以从内部类中访问在该方法范围内声明的所有变量。赋值后,最终变量的值将无法更改。