设计一个账户类,其私有属性有账户余额,可实现取款和存款改变账户余额。再通过派生定义一个信用卡账户类,并在派生类中增加私有属性年利率,并增加方法计算月利息。
月利息=透支额×年利率/12
当账户余额大于或等于0时,透支额为0;当账户余额小于0时,透支额为账户余额的绝对值。
编写一个测试程序,先向信用卡账户中存款,再从信用卡账户中取款,最后根据透支额计算月利息,要求:
1、存款数、取款数和年利率从键盘上输入;
2、当账户余额大于或等于0时,输出账户余额;当账户余额小于0时,输出透支额和月利息。
Account:
package Day1;
public class Account {
double surplus;
public double getSurplus() {
return this.surplus;
}
public void setSurplus(double surplus) {
this.surplus=surplus;
}
public Account() {
this.surplus=0;
}
public Account(double surplus) {
this.surplus=surplus;
}
public double deposit(double money) throws Exception{
if(money<=0)
throw new Exception("输入不正确!");
return surplus+=money;
}
public double widthdrawal(double money) throws Exception{
if(money<=0||money>surplus)
throw new Exception("输入不正确!");
return surplus-=money;
}
}
creditcard :
package Day1;
public class creditcard extends Account{
private double rate;
public double getRate() {
return this.rate;
}
public void setRate(double rate) {
this.rate=rate;
}
public creditcard() {
}
public creditcard(double surplus,double rate) {
super(surplus);
this.rate=rate;
}
public double interest() {
if(surplus<0)
return Math.abs(surplus)*rate/12;
else
return 0;
}
}
Test:
package Day1;
import java.util.*;
public class Test {
public static void main(String[] args) {
try{
Scanner sc=new Scanner(System.in);
System.out.println("请输入存款金额:");
double deposit=sc.nextDouble();
System.out.println("请输入取款金额:");
double widthdrawal=sc.nextDouble();
System.out.println("请输入年利率:");
double rate=sc.nextDouble();
creditcard card=new creditcard ();
card.setRate(rate);
card.deposit(deposit);
card.widthdrawal(widthdrawal);
if(card.getSurplus()>=0)
System.out.println("账户余额:"+card.getSurplus());
else
System.out.println("透支额:"+ Math.abs(card.getSurplus())+" "+" "+"月利息:"+ card.interest());
}catch(Exception e) {
e.printStackTrace();
}
}
}