当前位置:首页 > Java

java 如何封装

2026-02-04 15:25:19Java

封装的概念

封装是面向对象编程的三大特性之一,它将数据和操作数据的方法绑定在一起,对外隐藏内部实现细节,仅暴露必要的接口。封装能提高代码安全性、可维护性和复用性。

实现封装的关键步骤

使用访问修饰符控制可见性

java 如何封装

  • private:仅当前类内部可见,外部无法直接访问。
  • protected:当前类及其子类可见。
  • default(默认):同一包内可见。
  • public:全局可见。
public class Person {
    private String name; // 私有属性
    private int age;

    // 公开的getter方法
    public String getName() {
        return name;
    }

    // 公开的setter方法
    public void setName(String name) {
        this.name = name;
    }
}

提供公共方法访问私有属性 通过getter和setter方法间接访问私有字段,可在方法中添加逻辑控制:

public void setAge(int age) {
    if (age > 0 && age < 150) { // 数据校验
        this.age = age;
    } else {
        throw new IllegalArgumentException("Invalid age");
    }
}

隐藏实现细节 将复杂逻辑封装在方法内部,调用者只需关注输入输出:

java 如何封装

public class BankAccount {
    private double balance;

    public void deposit(double amount) {
        // 内部可能包含日志记录、事务处理等
        balance += amount;
    }
}

封装的进阶实践

使用不可变对象 通过final关键字和仅提供getter方法实现:

public final class ImmutablePoint {
    private final int x;
    private final int y;

    public ImmutablePoint(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() { return x; }
    public int getY() { return y; }
}

Builder模式封装复杂对象 适用于多参数的复杂对象构造:

public class Computer {
    private final String CPU;
    private final String RAM;

    private Computer(Builder builder) {
        this.CPU = builder.CPU;
        this.RAM = builder.RAM;
    }

    public static class Builder {
        private String CPU;
        private String RAM;

        public Builder setCPU(String CPU) {
            this.CPU = CPU;
            return this;
        }

        public Computer build() {
            return new Computer(this);
        }
    }
}

封装的设计原则

  • 单一职责原则:每个类只负责一个明确的功能
  • 迪米特法则:减少类之间的直接依赖
  • 接口隔离原则:定义专用的细粒度接口

通过合理运用封装技术,可以构建出高内聚、低耦合的健壮系统架构。

标签: java
分享给朋友:

相关文章

java如何输入

java如何输入

使用Scanner类进行输入 Scanner类是Java中最常用的输入工具,适用于从控制台或文件读取数据。需要导入java.util.Scanner包。 基本语法: Scanner sca…

如何编写java程序

如何编写java程序

安装开发环境 下载并安装JDK(Java Development Kit),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME和PATH正确设置。 选…

java如何连接数据库

java如何连接数据库

Java连接数据库的方法 Java连接数据库通常使用JDBC(Java Database Connectivity)技术,以下是具体步骤和示例代码。 加载数据库驱动 在连接数据库之前,需要加载对应的…

java如何打印数组

java如何打印数组

打印数组的方法 在Java中,打印数组有多种方式,以下是几种常见的方法: 使用Arrays.toString()方法 这种方法适用于一维数组,可以快速将数组转换为字符串形式输出: int[] a…

java中如何获取当前时间

java中如何获取当前时间

获取当前时间的几种方法 使用 java.time 包(Java 8及以上推荐) import java.time.LocalDateTime; LocalDateTime currentTime =…

java如何创建测试类

java如何创建测试类

创建测试类的基本步骤 在Java中创建测试类通常使用JUnit框架,以下是具体方法: 安装JUnit依赖 对于Maven项目,在pom.xml中添加依赖: <dependency>…