You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.9 KiB
91 lines
2.9 KiB
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属性,无法直接访问
|
|
}
|
|
}
|