如何封装java代码
封装Java代码的基本方法
封装是面向对象编程的三大特性之一,用于隐藏对象的属性和实现细节,仅对外提供公共访问方式。以下是实现封装的主要方法:
使用访问修饰符 Java提供四种访问修饰符控制访问权限:
private:仅当前类可访问protected:当前类、同包及子类可访问默认(无修饰符):当前类和同包可访问public:所有类可访问
public class Person {
private String name; // 私有属性
private int age;
public String getName() { // 公共getter方法
return name;
}
public void setName(String name) { // 公共setter方法
this.name = name;
}
}
提供getter和setter方法 通过公共方法访问私有属性,可在方法中加入逻辑控制:
public void setAge(int age) {
if(age > 0 && age < 150) { // 添加验证逻辑
this.age = age;
} else {
throw new IllegalArgumentException("Invalid age");
}
}
使用包(package)组织代码 将相关类放在同一包中,通过包级访问控制实现封装:
package com.example.model;
class InternalHelper { // 包私有类
void helperMethod() {...}
}
不可变类设计 通过final类和私有final字段实现完全封装:
public final class ImmutablePoint {
private final int x;
private final int y;
public ImmutablePoint(int x, int y) {
this.x = x;
this.y = y;
}
// 只有getter没有setter
}
封装的最佳实践
接口隔离原则 通过接口定义公共契约,隐藏实现细节:
public interface DataRepository {
void save(Data data);
Data findById(String id);
}
public class DatabaseRepository implements DataRepository {
// 实现细节对外不可见
}
使用Builder模式封装复杂对象创建
public class NutritionFacts {
private final int servingSize;
private final int servings;
public static class Builder {
// 必填参数
private final int servingSize;
private final int servings;
// 可选参数
private int calories = 0;
public Builder(int servingSize, int servings) {
this.servingSize = servingSize;
this.servings = servings;
}
public NutritionFacts build() {
return new NutritionFacts(this);
}
}
private NutritionFacts(Builder builder) {
servingSize = builder.servingSize;
servings = builder.servings;
}
}
使用工厂方法封装对象创建

public class PaymentFactory {
public static Payment create(String type) {
switch(type) {
case "credit": return new CreditCardPayment();
case "paypal": return new PayPalPayment();
default: throw new IllegalArgumentException();
}
}
}
通过合理使用这些封装技术,可以提高代码的安全性、可维护性和可扩展性,同时降低模块间的耦合度。






