在Java中,final关键字可以用于修饰类、方法和变量。
- final修饰类:final修饰的类是不可被继承的,即该类不能有子类。例如:
final class MyClass { // 类的内容 }
- final修饰方法:final修饰的方法不能被子类重写。例如:
class MyClass { final void myMethod() { // 方法的内容 } }
- final修饰变量:final修饰的变量是常量,一旦被赋值后就不能再改变其值。final变量可以在声明时初始化,也可以在构造方法中初始化。例如:
class MyClass { final int myVariable = 10; // 在声明时初始化 final int myVariable; MyClass() { myVariable = 20; // 在构造方法中初始化 } }
需要注意的是,对于引用类型的final变量,其引用地址是不可变的,但是该引用指向的对象的状态可以改变。例如:
class MyClass { final ListmyList = new ArrayList<>(); void addToList(String item) { myList.add(item); // 可以向列表中添加元素 } }
在上面的例子中,myList是一个final变量,但是可以通过调用addToList方法向列表中添加元素,因为myList引用的ArrayList对象的状态是可以改变的。