Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误和异常

Java 多线程

Java 同步

Java 网络

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 和框架

Java 类引用

Java 有用资源

Java - final 关键字



final 关键字用于定义常量,并使属性、方法和类成为 final,即不可更改。定义为 final 的方法和类不能被继承和重写。final 关键字是非访问修饰符。

final 关键字可以与以下主题一起使用

  • 变量
  • 方法

最终变量

最终变量只能显式初始化一次。声明为 final 的引用变量永远不能重新分配以引用不同的对象。

但是,对象中的数据可以更改。因此,可以更改对象的状态,但不能更改引用。

对于变量final 修饰符通常与 static 一起使用以使常量成为类变量。

最终变量示例

public class Tester{
   final int value = 10;	 

   public void changeValue() {
      value = 14;   
   }
   public static void main(String[] args) {
      Tester tester = new Tester();
      tester.changeValue();
   }	 
}

输出

Tester.java:6: error: cannot assign a value to final variable value
                value = 14;
                ^
1 error

最终方法

最终方法不能被任何子类重写。如前所述,final 修饰符阻止方法在子类中被修改。

使方法成为最终的主要目的是防止任何外部人员更改方法的内容。

最终方法示例

您使用类声明中的 final 修饰符声明方法,如下例所示 -

class FinalTester {
   int value = 10;	 

   public final void changeValue() {
      value = 12;   
   }   
}

public class Tester extends FinalTester {
   public void changeValue() {
      value = 14;   
   }
   public static void main(String[] args) {
      Tester tester = new Tester();
      tester.changeValue();
   }
}

输出

Tester.java:11: error: changeValue() in Tester cannot override changeValue() in FinalTester
        public void changeValue() {
                    ^
  overridden method is final
1 error

最终类

声明final 的主要目的是防止该类被子类化。如果一个类被标记为 final,那么任何类都不能继承 final 类的任何特性。

最终类示例

final class FinalTester {
   int value = 10;	 

   public void changeValue() {
      value = 12;   
   }   
}

public class Tester extends FinalTester {
   public void changeValue() {
      value = 14;   
   }
   public static void main(String[] args) {
      Tester tester = new Tester();
      tester.changeValue();
   }
}

输出

Tester.java:10: error: cannot inherit from final FinalTester
public class Tester extends FinalTester {
                            ^
1 error

何时在 Java 中使用 final 关键字?

final 关键字可以与变量、方法和类一起使用,以使它们成为常量,以便不能更改其值或属性。final 关键字可用于以下上下文

  • 定义最终变量,以便其值不应更改。
  • 定义最终方法,以便不应重写。
  • 定义最终类,以便不应继承。
java_basic_syntax.htm
广告