1. final
修饰变量
final
修饰的变量一旦赋值就不能再更改,通常用于定义常量。
java
package com.example.demo1;
public class FinalVariableExample {
// 静态常量,类加载时初始化
public static final double PI = 3.14159;
// 实例常量,对象创建时初始化
public final int objectId;
public FinalVariableExample(int id) {
// 实例常量在构造方法中初始化
this.objectId = id;
}
public static void main(String[] args) {
FinalVariableExample example = new FinalVariableExample(1);
System.out.println("PI 的值: " + PI);
System.out.println("对象 ID: " + example.objectId);
// 下面这行代码会报错,因为 PI 是 final 变量,不能重新赋值
// PI = 3.14;
}
}
2. final
修饰方法
final
修饰的方法不能被子类重写,常用于确保方法的行为不被改变。
java
package com.example.demo1;
class Parent {
// final 方法,不能被重写
public final void display() {
System.out.println("这是父类的 final 方法");
}
}
class Child extends Parent {
// 下面这行代码会报错,因为不能重写父类的 final 方法
// public void display() {
// System.out.println("尝试重写 final 方法");
// }
}
public class FinalMethodExample {
public static void main(String[] args) {
Child child = new Child();
child.display();
}
}
3. final
修饰类
final
修饰的类不能被继承,常用于创建不可变类。
java
package com.example.demo1;
// final 类,不能被继承
final class FinalClass {
public void show() {
System.out.println("这是 final 类的方法");
}
}
// 下面这行代码会报错,因为不能继承 final 类
// class SubClass extends FinalClass {
// }
public class FinalClassExample {
public static void main(String[] args) {
FinalClass fc = new FinalClass();
fc.show();
}
}
4. final
修饰方法参数
final
修饰方法参数时,在方法内部不能修改该参数的值。
java
package com.example.demo1;
public class FinalParameterExample {
public void printValue(final int num) {
System.out.println("传入的值: " + num);
// 下面这行代码会报错,因为 num 是 final 参数,不能修改
// num = 10;
}
public static void main(String[] args) {
FinalParameterExample example = new FinalParameterExample();
example.printValue(5);
}
}