From 18d01b2696367d5bc441707b8171e8f6e8efa9d8 Mon Sep 17 00:00:00 2001 From: Zhoutianyu <1941587995@qq.com> Date: Sun, 22 Mar 2026 18:51:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20'w3'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- w3/BankAccount.class | Bin 0 -> 2363 bytes w3/BankAccount.java | 91 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 w3/BankAccount.class create mode 100644 w3/BankAccount.java diff --git a/w3/BankAccount.class b/w3/BankAccount.class new file mode 100644 index 0000000000000000000000000000000000000000..5acc9febda0e8c0feb7e44cec49527601cd490a2 GIT binary patch literal 2363 zcmaJ@SyL2O6#ni2GsD;{85LtxTmk|!Mify@P7?qF;pFi4j*Ref)tdzSB>^PMyO&wta80UUr8 zK>!6I6ly3!P@sHRo|E+{X%5yO?;qBawm@*7VH$ReKtXL?UopZc4k4mp1vG&b9nu_W zPbRG~lbR*c-F1(p`}K@KG_mNd$Ick$V6(C>)ljC4i>+}}&veVQuB0z%h+?Hcs9!RC zQWp?i#aNAs5Y}jT8Ecn->zT;fdYYK5F$P}k1~RPr6O3XrmM+uHQQmN!hV|GWuqG`> z^iIo6O8b;y4{?{ZrD-Fuq$z8=PQmNfV9 z`gM)$QZ+>`;*oXgG*NJQ&P75Li{~Q@bcB zeMHs$O@XaG*YYtT@J?%hoGVKhrtb2$SN5kUi6*S1O!di(q24`Vp*>`fJ0*!c{x>tP zGVOIjk1dlU$KVR4#Y$vZcGk|w(PO$jWDR7)cwbz~e^zc+LLLGIR-+~rB-rYwko2y}cD z!l0_rkU-VqlrYS5)`(v34hy$k56Yx%WhMl!<(JY^bT4pNngc04Ta~b^k+IR{<;lyF zEHUhz7}b5$^YiOY!RCC{R3cBXIzD@h0d=#f#UJ ze*G;r#?IV9c}^ouqDJjXN(8qst2Rhfw8Mbg}!!U9?xJto~<693WcX;5nA06Xq5;t zP!*w7GdEiat_E?`@#fpmg6(+_TNfa<=0Rju;t_@ME%bO8>z&jAMGD++^d4}M5acn? z=y=qeeUax;pcjW0jQQV4J!KsF{W;_PzQ&xLKE@@_8@Kx!b0T}jEySr97*uR3S>%xV zh)`b>MI6$KH*Ud#3)u)dJms**+vxLreWFT7-KGZ!pNYn!uiZm^BEAX@Q)uL}cM5NC z*{_yp>lE5qqWBcLrg7LQ+G23GJV!~#ZnEMeN!H6&ImIHKW{KX-1Jp$6X@=BTzB8mW jKOgW8-vc;HJw@*VBq@E*d4AwLB@CWKC>=%$Cf5EBuOmWa literal 0 HcmV?d00001 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