final在java中的作用
在Java中,final
是一个关键字,用于修饰类、方法和变量,表示“不可更改”的含义。
1、final 修饰变量:
-
表示该变量一旦被赋值后,不能被重新赋值(即常量)。
-
如果是基本类型(如
int
,double
),值不能改变。 -
如果是引用类型(如对象、数组),引用不 能指向其他对象,但对象内部的状态可以修改(除非对象本身是不可变的,如
String
)。
final int x = 10;
x = 20; // 编译错误,不能重新赋值final List<String> list = new ArrayList<>();
list.add("Hello"); // 允许,可以修改对象内部状态
list = new ArrayList<>(); // 编译错误,不能重新赋值
2、final修饰方法
-
表示该方法不能被子类重写(Override)。
-
用于防止子类修改方法的行为。
class Parent {final void show() {System.out.println("Parent show");}
}class Child extends Parent {void show() { // 编译错误,不能重写 final 方法System.out.println("Child show");}
}
3、final修饰类
-
表示该类不能被继承(即没有子类)。
-
例如,Java 的
String
类就是final
的,防止被继承和修改。
final class MyFinalClass { }class SubClass extends MyFinalClass { // 编译错误,不能继承 final 类
}
4、应用场景:
-
常量定义(
final
变量)。 -
防止方法被重写(如工具类中的方法)。
-
防止类被继承(如安全敏感类或工具类)。