Java 静态final

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!");

  }
}

如果尝试编译上面的代码,编译器将生成以下错误。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Java 静态final》
文章链接:https://zhuji.vsping.com/295360.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。