Java教程 - Java静态final
Java静态关键字
静态类成员可以独立于该类的任何对象使用。
静态成员可以自身使用,而不参考特定实例。
这里展示了如何声明 static
方法和 static
变量。
static int intValue; static void aStaticMethod(){ }
限制
声明为静态的方法有几个限制:
- 它们只能调用其他静态方法。
- 它们只能访问静态数据。
- 他们不能以任何方式引用this或super。
类的所有实例共享同一个静态变量。您可以声明一个静态块来初始化静态变量。当第一次加载类时,静态块只被调用一次。
以下示例显示了具有静态方法的类
public class Main { static int a = 3; static int b; static void meth(int x) { System.out.println("x = " + x); System.out.println("a = " + a); System.out.println("b = " + b); } public static void main(String args[]) { Main.meth(42); } }
输出:
例子
以下示例显示了具有静态变量的类。
public class Main { static int a = 3; static int b; }
我们可以引用上面定义的静态变量如下:
Main.a
以下示例显示了具有静态初始化块的类。
public class Main { static int a = 3; static int b; static { System.out.println("Static block initialized."); b = a * 4; } }
Java final关键字
无法修改最终变量。 必须在声明时初始化最终变量。最终变量基本上是一个常数。
final变量
public class Main { final int FILE_NEW = 1; final int FILE_OPEN = 2; }
防止覆盖
声明为final的方法不能被覆盖。
class A{ final void meth() { System.out.println("This is a final method."); } } class B extends A { void meth() { // ERROR! Can"t override. System.out.println("Illegal!"); } }
如果尝试编译上面的代码,编译器将生成以下错误。