Java中final修饰的知识点 | 青训营

148 阅读2分钟

Java中final修饰符用于标识一些不可变的实体,包括类、方法和变量。当修饰一个类时,表示该类不能被继承。当修饰一个方法时,表示该方法不能被子类重写。当修饰一个变量时,表示该变量只能被赋值一次。下面将详细解释final修饰符的使用和作用,结合代码和例子进行说明。

一、final修饰类:

  1. 用final修饰的类不能被继承。
  2. 一般将final修饰符用于安全类或不希望被修改的类。
final class FinalClass {
   // 该类不可继承
}
 
class SubClass extends FinalClass { 
   // 编译错误,无法继承FinalClass类
}

二、final修饰方法:

  1. 用final修饰的方法不能被子类重写。
  2. 一般将final修饰符用于安全方法或不希望被修改的方法。
class SuperClass {
   final void finalMethod() {
      // 该方法不能被子类重写
   }
}

class SubClass extends SuperClass {
   void finalMethod() {
      // 编译错误,无法重写finalMethod方法
   }
}

三、final修饰变量:

  1. 用final修饰的变量只能被赋值一次。
  2. final修饰的变量可以是基本数据类型或引用类型。
  3. 一般将final修饰符用于常量或不希望被修改的变量。
final int MAX_VALUE = 100; // final修饰的常量
 
MAX_VALUE = 200; // 编译错误,无法再次赋值
 
final MyClass obj = new MyClass(); // final修饰的变量
 
obj = new MyClass(); // 编译错误,无法再次赋值
 
obj.modifyProperty(); // 可以调用对象的方法

四、final修饰方法的参数:

  1. 用final修饰的方法参数表示该参数为不可更改的参数。
  2. 一般将final修饰符用于提高方法参数的安全性。

例子: void method(final int param) { param = 10; // 编译错误,无法更改final参数 }

五、final修饰方法的返回值:

  1. 用final修饰的方法返回值表示该返回值为不可更改的值。
  2. 一般将final修饰符用于提高方法返回值的安全性。
final int getFinalValue() {
   return 100;
}
 
int value = getFinalValue();
 
value = 200; // 编译错误,无法更改final返回值

六、final修饰类的成员变量:

  1. 用final修饰的类的成员变量必须在构造器、构造块或直接声明时赋值。
  2. 一般将final修饰符用于不希望被修改的成员变量。
class FinalVariable {
   final int finalValue;
 
   FinalVariable() {
      finalValue = 100; // 在构造器中赋值
   }
}

七、final修饰局部变量:

  1. 用final修饰的局部变量必须在声明时或方法内进行初始化赋值。
  2. 一般将final修饰符用于定义常量。
void method() {
   final int finalValue = 100; // 在方法内赋值
 
   finalValue = 200; // 编译错误,无法更改final局部变量
}