相关使用方法
1. final变量使用方法
基本数据类型常量使用:
final double PI = 3.14159;
// PI = 3.14; // 编译错误,不能修改final变量
引用类型常量使用:
final List<String> NAMES = new ArrayList<>();
NAMES.add("Alice"); // 合法,修改对象内容
// NAMES = new ArrayList<>(); // 非法,不能修改引用
2. final方法使用方法
父类中定义final方法:
public class BaseClass {
public final void printInfo() {
System.out.println("This is a final method.");
}
}
子类不能重写final方法:
public class SubClass extends BaseClass {
// 以下代码会导致编译错误
// @Override
// public void printInfo() { ... }
}
3. final类使用方法
定义final类:
public final class UtilityClass {
public static int add(int a, int b) {
return a + b;
}
}
不能继承final类:
// 编译错误:无法继承final类
// public class ExtendedUtility extends UtilityClass { ... }
组件封装方法
1. 常量类封装
将相关常量封装在一个final类中:
public final class AppConstants {
private AppConstants() {
// 私有构造函数,防止实例化
}
public static final int MAX_UPLOAD_SIZE = 1024 * 1024;
public static final String DEFAULT_ENCODING = "UTF-8";
}
使用方式:
int size = AppConstants.MAX_UPLOAD_SIZE;
2. 工具类封装
将工具方法封装在final类中:
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);
}
}
使用方式:
boolean empty = StringUtils.isEmpty("test");
String capitalized = StringUtils.capitalize("hello");
3. 不可变数据对象封装
创建不可变的数据传输对象:
public final class UserDTO {
private final String username;
private final int age;
private final List<String> roles;
public UserDTO(String username, int age, List<String> roles) {
this.username = username;
this.age = age;
// 防御性复制,确保不可变性
this.roles = new ArrayList<>(roles);
}
public String getUsername() {
return username;
}
public int getAge() {
return age;
}
public List<String> getRoles() {
// 返回副本,防止外部修改
return new ArrayList<>(roles);
}
}
使用方式:
List<String> roles = Arrays.asList("admin", "user");
UserDTO user = new UserDTO("john", 30, roles);
// user.getRoles().add("guest"); // 不会影响内部列表
4. 防止子类修改核心逻辑
封装核心业务逻辑的final类:
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;
}
}
使用方式:
PaymentProcessor processor = new PaymentProcessor(new DefaultTaxCalculator());
double total = processor.processPayment(100.0);
final 关键字,Java 关键字,Java 编程,面向对象编程,Java 开发,Java 基础,Java 核心技术,Java 面试题,Java 特性,编程开发,软件开发,Java 关键字用法,final 修饰符,Java 语法,Java 技术
准备了一些面试资料,需要的拿走
https://pan.quark.cn/s/4459235fee85