今天主要学习的内容是:继承性以及super关键字的应用,并且根据题目要求写了两个简单的类来运用继承性。
主要的功能是:实现银行账户的余额查询、月利率查询、取钱(包括了信用卡的透支功能)、以及存钱操作。
具体的代码如下:
1、Account类:
public class Account {
private int id;//账户
private double balance;//余额
private double annuallnterestRate;//年利率
//构造器
public Account(int id, double balance, double annuallnterestRate) {
super();
this.id = id;
this.balance = balance;
this.annuallnterestRate = annuallnterestRate;
}
//下面是方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public double getAnnuallnterestRate() {
return annuallnterestRate;
}
public void setAnnuallnterestRate(double annuallnterestRate) {
this.annuallnterestRate = annuallnterestRate;
}
//返回月利率
public double getMonthlyInterest() {
return annuallnterestRate / 12;
}
//取钱
public void withdraw(double amount) {
if(balance >= amount) {
balance -= amount;
return;
}
System.out.println("余额不足");
}
//存钱
public void deposit(double amount) {
if(amount > 0) {
balance += amount;
}
}
}
2、Account类的测试类:(只用这里的前两个类可以实现基本的,不包含透支功能的银行账户管理功能)
public class AccountTest {
public static void main(String[] args) {
Account acct = new Account(1122,20000,0.045);
acct.withdraw(30000);
System.out.println("您的账户余额为:"+acct.getBalance());
acct.withdraw(2500);
System.out.println("您的账户余额为:"+acct.getBalance());
acct.deposit(3000);
System.out.println("您的账户余额为:"+acct.getBalance());
System.out.println("月利率为:"+(acct.getMonthlyInterest()*100)+"%");
}
}
3、CheckAccount类:(Account类的子类)
public class CheckACCOUNT extends Account{
private double overdraft;
public CheckACCOUNT(int id, double balance, double annuallnterestRate,double overdraft) {
super(id, balance, annuallnterestRate);
this.overdraft = overdraft;
}
public double getOverdraft() {
return overdraft;
}
public void setOverdraft(double overdraft) {
this.overdraft = overdraft;
}
//重写withdraw方法
@Override
public void withdraw(double amount) {
if(getBalance() >= amount) {
//余额足够的情况下
/*
* 方式一:
* //父类中有setBalance时
* setBalance( getBalance()- amount);
*/
//方式二:
//因为父类中的withdraw可以实现余额的更新
super.withdraw(amount);
//方式三:更改Account的权限为public或者protected
}else if(overdraft >= amount - getBalance()) {
//透支额度够的情况下
overdraft -= (amount - getBalance());
setBalance(0);
//或者将这句话改为:
//super.withdraw(getBalance);
}else {
System.out.println("超过可透支限额!");
}
}
}
4、CheckAccount类的测试类(用这个类的话,就不需要Account类的测试类了)
public class CheckaAccounntTest {
public static void main(String[] args) {
CheckACCOUNT acct = new CheckACCOUNT(1122, 20000, 0.045, 5000);
acct.withdraw(5000);
System.out.println("您的账户余额为:"+acct.getBalance());
System.out.println("您的可透支额度为:"+acct.getOverdraft());
acct.withdraw(18000);
System.out.println("您的账户余额为:"+acct.getBalance());
System.out.println("您的可透支额度为:"+acct.getOverdraft());
acct.withdraw(3000);
System.out.println("您的账户余额为:"+acct.getBalance());
System.out.println("您的可透支额度为:"+acct.getOverdraft());
}
}
行百里者半九十,加油!