JavaSE-封装

封装

封装(Encapsulation)是面向对象编程(OOP)中的一个核心概念,它涉及将数据(属性)和操作这些数据的方法(函数)捆绑在一起。在封装的类中,细节是对使用者隐藏的,而只有通过一个定义良好的接口可以与类进行交互。

封装的主要目的是:

  1. 保护数据:通过将数据(属性)设置为私有,可以控制对数据的访问,确保数据不被非法修改。
  2. 提高代码可维护性:将数据和操作数据的方法放在一起,使得代码更加模块化,易于维护和扩展。
  3. 提高代码可读性:通过提供易于理解的接口(公共方法),可以使得代码更加易于理解和使用。

下面是一个使用Java语言实现封装的例子:

public class BankAccount {
    // 私有属性
    private String accountNumber;
    private double balance;

    // 公共方法(获取账户号)
    public String getAccountNumber() {
        return accountNumber;
    }

    // 公共方法(设置账户号)
    public void setAccountNumber(String accountNumber) {
        this.accountNumber = accountNumber;
    }

    // 公共方法(获取余额)
    public double getBalance() {
        return balance;
    }

    // 公共方法(存款)
    public void deposit(double amount) {
        if (amount > 0) {
            balance += amount;
        } else {
            System.out.println("Invalid deposit amount.");
        }
    }

    // 公共方法(取款)
    public void withdraw(double amount) {
        if (amount > 0 && amount <= balance) {
            balance -= amount;
        } else {
            System.out.println("Invalid withdrawal amount.");
        }
    }
}

public class Main {
    public static void main(String[] args) {
        BankAccount myAccount = new BankAccount();
        myAccount.setAccountNumber("123456");
        System.out.println("Account Number: " + myAccount.getAccountNumber());
        myAccount.deposit(1000);
        System.out.println("Balance: " + myAccount.getBalance());
        myAccount.withdraw(500);
        System.out.println("Balance after withdrawal: " + myAccount.getBalance());
    }
}

在这个例子中,BankAccount 类有两个私有属性 accountNumberbalance,以及一些公共方法(如 getAccountNumbersetAccountNumberdepositwithdraw)来操作这些属性。通过这种方式,BankAccount 类实现了封装。

Main 类中,我们创建了一个 BankAccount 对象,并使用公共方法来设置账户号、存款和取款。这样,我们就可以在不直接访问私有属性的情况下对对象进行操作。

这个例子展示了如何使用Java语言实现封装。通过将数据和操作数据的方法放在一起,我们可以更好地保护数据、提高代码的可维护性和可读性。

posted @ 2024-08-19 20:21  柒寒(平安)  阅读(39)  评论(0)    收藏  举报