奇幻新游活动中心



final 关键字的使用方法及应用场景解析

相关使用方法

1. final变量使用方法基本数据类型常量使用:

代码语言:java复制final double PI = 3.14159;

// PI = 3.14; // 编译错误,不能修改final变量引用类型常量使用:

代码语言:java复制final List NAMES = new ArrayList<>();

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 roles;

public UserDTO(String username, int age, List roles) {

this.username = username;

this.age = age;

// 防御性复制,确保不可变性

this.roles = new ArrayList<>(roles);

}

public String getUsername() {

return username;

}

public int getAge() {

return age;

}

public List getRoles() {

// 返回副本,防止外部修改

return new ArrayList<>(roles);

}

}使用方式:

代码语言:java复制List roles = Arrays.asList("admin", "user");

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 开发,代码安全性