需求:
活期是0.35%,定期是 1.75%,定期如果满10万额外给予3%的收益。
结算利息要先进行用户名、密码验证,验证失败直接提示,登录成功进行结算
步骤:
1.创建一个抽象的账户类Account作为父类模板,提供属性(余额)
2.在父类Account中提供一个模板方法实现登录验证,利息结算、利息输出。
3.具体的利息结算定义成抽象方法,交给子类实现。
4.定义活期账户类,让子类重写实现具体的结算方法
5.定义定期账户类,让子类重写实现具体的结算方法
实现代码
1.定义父类模板,模板方法,抽象方法
public abstract class account {
//1.先定义账户存款
private double money;
//2.定义父类模板,方便子类调用
public final void handle(String username, String passWord) {
//①判断用户名和密码与先写好的Curry和FMVP是否一样,
if ("Curry".equals(username) && "FMVP".equals(passWord)) {
System.out.println("登录成功~~~");
//②调用抽象方法calculate 计算利息
double result = calculate(money);
//③输出利息
System.out.println("您的利息为:" + result);
} else {
System.out.println("登录失败");
}
}
public abstract double calculate(double money);
//无参构造器
public account() {
}
//有参构造器
public account(double money) {
this.money = money;
}
//get和set方法
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
2.定义活期和定期两个子类继承父类
//活期
public class dueOnDemand extends account {
//子类调用父类的有参构造器
public dueOnDemand(double money)
{
super(money);
}
@Override
public double calculate(double money) {
double rsMoney = money * 0.0035;
return rsMoney;
}
}
//定期
public class fixedPeriod extends account {
@Override
public double calculate(double money) {
double rsMoney;
if (money > 100000) {
rsMoney = money * 0.0475;
} else {
rsMoney = money * 0.0175;
}
return rsMoney;
}
}
3.定义测试类来验证代码正确性
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//1.创建子类对象,子类对象功能更强大,注意父类不能创建对象
dueOnDemand due=new dueOnDemand(10000);
//2.输入用户名和密码
System.out.println("请输入你的用户名");
String putName= sc.next();
System.out.println("请输入你的密码");
String putPassWord= sc.next();
due.handle(putName,putPassWord);
}