创建3个类,其中Account类用来模拟银行账户,每个银行账户包括属性:账户号、余额、年利率、开户时间,并有取款(withdraw)和存款(deposit)方法。在此基础上,创建2个子类,分别为支票账户(checking account)和储蓄账户(saving account)。支票账户有一定的透支额,储蓄账户不能透支。实现这几个类,并书写一个测试程序,创建Account, SavingsAccount, 和 CheckingAccount对象,并调用它们的toString()方法。
调试欢乐多
package t;import java.util.Date;public abstract class Account { private String cardNo;
private double balance;
private double interestRate;
private Date createDate;
public String getCardNo() {
return cardNo;
}
public void setCardNo(String cardNo) {
this.cardNo = cardNo;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public double getInterestRate() {
return interestRate;
}
public void setInterestRate(double interestRate) {
this.interestRate = interestRate;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public abstract double withdraw(double money);
public abstract void deposit(double money);
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
long temp;
temp = Double.doubleToLongBits(balance);
result = prime * result + (int) (temp ^ (temp >>> 32));
result = prime * result + ((cardNo == null) ? 0 : cardNo.hashCode());
result = prime * result
+ ((createDate == null) ? 0 : createDate.hashCode());
temp = Double.doubleToLongBits(interestRate);
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final Account other = (Account) obj;
if (Double.doubleToLongBits(balance) != Double
.doubleToLongBits(other.balance))
return false;
if (cardNo == null) {
if (other.cardNo != null)
return false;
} else if (!cardNo.equals(other.cardNo))
return false;
if (createDate == null) {
if (other.createDate != null)
return false;
} else if (!createDate.equals(other.createDate))
return false;
if (Double.doubleToLongBits(interestRate) != Double
.doubleToLongBits(other.interestRate))
return false;
return true;
}
@Override
public String toString() {
return super.toString();
}
}
package t;public class CheckingAccount extends Account{ public CheckingAccount(double overdraft){
setOverdraft(overdraft);
}
private double overdraft;
public double getOverdraft() {
return overdraft;
} public void setOverdraft(double overdraft) {
this.overdraft = overdraft;
} @Override
public void deposit(double money) {
setBalance(getBalance() + money);
} @Override
public double withdraw(double money) {
double balance = getBalance();
if(money > balance + overdraft){
System.out.println("余额不足!");
return 0;
}
setBalance(balance - money);
return money;
}}
package t;public class SavingAccount extends Account{ @Override
public void deposit(double money) {
setBalance(getBalance() + money);
} @Override
public double withdraw(double money) {
double balance = getBalance();
if(money > balance){
System.out.println("余额不足!");
return 0;
}
setBalance(balance - money);
return money;
}}
package t;import java.util.Date;public class Test { public static void main(String[] args) {
Account a1 = new CheckingAccount(1000.00);
a1.setBalance(1000.00);
a1.setCardNo("000001");
a1.setCreateDate(new Date());
a1.setInterestRate(0.03);
a1.deposit(1000.00);
a1.withdraw(4000);
Account a2 = new SavingAccount();
a2.setBalance(1000.00);
a2.setCardNo("000002");
a2.setCreateDate(new Date());
a2.setInterestRate(0.03);
a2.deposit(1000.00);
a2.withdraw(4000);
}
}