public class BankAccount { // 1. 定义私有属性,符合封装原则,外部无法直接访问 private final String accountNumber; // 账户号:创建后不可修改,用final修饰(也可在setter中做限制) private String ownerName; // 户主姓名:可修改 private double balance; // 余额:只能通过方法修改 /** * 2. 构造方法:创建账户时必须传入账户号和户主姓名,初始余额为0 */ public BankAccount(String accountNumber, String ownerName) { this.accountNumber = accountNumber; this.ownerName = ownerName; this.balance = 0.0; // 初始余额为0 } /** * 3. 存款操作 * @param amount 存款金额 */ public void deposit(double amount) { if (amount > 0) { // 金额必须大于0 balance += amount; System.out.println("存款成功!当前余额:" + balance); } else { System.out.println("存款失败:金额必须大于0!"); } } /** * 4. 取款操作 * @param amount 取款金额 */ public void withdraw(double amount) { if (amount > 0) { // 金额大于0 if (amount <= balance) { // 不超过当前余额 balance -= amount; System.out.println("取款成功!当前余额:" + balance); } else { System.out.println("取款失败:余额不足!"); } } else { System.out.println("取款失败:金额必须大于0!"); } } /** * 5. 查询余额:对外提供查询方法,不允许直接修改 */ public double getBalance() { return balance; } /** * 6. Getter & Setter 方法 * - accountNumber 不提供setter,保证不可修改 * - ownerName 提供setter,允许修改 */ public String getAccountNumber() { return accountNumber; } public String getOwnerName() { return ownerName; } public void setOwnerName(String ownerName) { this.ownerName = ownerName; } // 测试类 public static void main(String[] args) { // 创建账户 BankAccount account = new BankAccount("622202123456789", "张三"); // 测试存款 account.deposit(1000.0); // 存款1000 // 测试取款 account.withdraw(300.0); // 取款300 // 测试余额不足取款 account.withdraw(800.0); // 余额不足,失败 // 测试修改户主姓名 account.setOwnerName("张三三"); System.out.println("修改后的户主姓名:" + account.getOwnerName()); // 尝试直接修改余额(编译报错,验证封装) // account.balance = 0; // 错误:balance是private属性,无法直接访问 } }