diff --git a/w3/BankAccount.class b/w3/BankAccount.class new file mode 100644 index 0000000..5acc9fe Binary files /dev/null and b/w3/BankAccount.class differ diff --git a/w3/BankAccount.java b/w3/BankAccount.java new file mode 100644 index 0000000..80f9307 --- /dev/null +++ b/w3/BankAccount.java @@ -0,0 +1,91 @@ +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属性,无法直接访问 + } +} \ No newline at end of file