final 关键字的使用方法及应用场景解析
相关使用方法
1. final变量使用方法基本数据类型常量使用:
代码语言:java复制final double PI = 3.14159;
// PI = 3.14; // 编译错误,不能修改final变量引用类型常量使用:
代码语言:java复制final List
NAMES.add("Alice"); // 合法,修改对象内容
// NAMES = new ArrayList<>(); // 非法,不能修改引用2. final方法使用方法父类中定义final方法:
代码语言:java复制public class BaseClass {
public final void printInfo() {
System.out.println("This is a final method.");
}
}子类不能重写final方法:
代码语言:java复制public class SubClass extends BaseClass {
// 以下代码会导致编译错误
// @Override
// public void printInfo() { ... }
}3. final类使用方法定义final类:
代码语言:java复制public final class UtilityClass {
public static int add(int a, int b) {
return a + b;
}
}不能继承final类:
代码语言:java复制// 编译错误:无法继承final类
// public class ExtendedUtility extends UtilityClass { ... }组件封装方法1. 常量类封装将相关常量封装在一个final类中:
代码语言:java复制public final class AppConstants {
private AppConstants() {
// 私有构造函数,防止实例化
}
public static final int MAX_UPLOAD_SIZE = 1024 * 1024;
public static final String DEFAULT_ENCODING = "UTF-8";
}使用方式:
代码语言:java复制int size = AppConstants.MAX_UPLOAD_SIZE;2. 工具类封装将工具方法封装在final类中:
代码语言:java复制public final class StringUtils {
private StringUtils() {
// 私有构造函数
}
public static boolean isEmpty(String str) {
return str == null || str.length() == 0;
}
public static String capitalize(String str) {
if (isEmpty(str)) return str;
return Character.toUpperCase(str.charAt(0)) + str.substring(1);
}
}使用方式:
代码语言:java复制boolean empty = StringUtils.isEmpty("test");
String capitalized = StringUtils.capitalize("hello");3. 不可变数据对象封装创建不可变的数据传输对象:
代码语言:java复制public final class UserDTO {
private final String username;
private final int age;
private final List
public UserDTO(String username, int age, List
this.username = username;
this.age = age;
// 防御性复制,确保不可变性
this.roles = new ArrayList<>(roles);
}
public String getUsername() {
return username;
}
public int getAge() {
return age;
}
public List
// 返回副本,防止外部修改
return new ArrayList<>(roles);
}
}使用方式:
代码语言:java复制List
UserDTO user = new UserDTO("john", 30, roles);
// user.getRoles().add("guest"); // 不会影响内部列表4. 防止子类修改核心逻辑封装核心业务逻辑的final类:
代码语言:java复制public final class PaymentProcessor {
private final TaxCalculator calculator;
public PaymentProcessor(TaxCalculator calculator) {
this.calculator = calculator;
}
public final double processPayment(double amount) {
// 核心业务逻辑,不允许子类修改
double tax = calculator.calculateTax(amount);
return amount + tax;
}
}使用方式:
代码语言:java复制PaymentProcessor processor = new PaymentProcessor(new DefaultTaxCalculator());
double total = processor.processPayment(100.0);Java,final 关键字,面向对象编程,关键字用法,变量修饰符,方法修饰符,类修饰符,不可变性,常量定义,继承限制,性能优化,编程规范,面试考点,Java 开发,代码安全性