假设银行Bank已经有按整年计算利息的一般方法,其中year 只能取整数,比如按整年 计算方法为:year*0.35*savedMoney。 建设银行ConstructionBank 和大连银行 BankOfDalian 是Bank的子类,隐藏继承的成员变量year,并重写计算利息的方法,即声明一个double型的变量year。比如,当year 取值为5.216时,表示计算5年216天的利息。建设银行或大连银行把5.216的整数部分赋给隐藏的year,并用super 调用Bank的计算利息的方法,求出5年的利息,再按自己的方法计算216天的利息。建设银行计算日利息的方法:day*0.0001*savedMoney,大连银行计算日利息的方法:day*0.00012*savedMoney。 测试类,求8000元存5年236天两银行的利息差额。 Bank 类属性:savedMoney、year、 interest、interestRate=0.35
时间: 2024-03-11 14:46:39 浏览: 248
根据题意,我们可以先定义一个 Bank 类,其中包含 savedMoney、year、interest 和 interestRate 属性,以及计算利息的方法 calculateInterest()。
```java
public class Bank {
protected double savedMoney; // 存款金额
protected int year; // 存款年限
protected double interest; // 利息
protected double interestRate = 0.35; // 年利率
public Bank(double savedMoney, int year) {
this.savedMoney = savedMoney;
this.year = year;
}
// 计算利息
public void calculateInterest() {
this.interest = this.year * this.interestRate * this.savedMoney;
}
public double getInterest() {
return this.interest;
}
}
```
接下来,我们分别定义建设银行 ConstructionBank 和大连银行 BankOfDalian 类,继承 Bank 类,并重写 calculateInterest() 方法,用 super 调用 Bank 类的 calculateInterest() 方法,计算整年的利息,并根据题目要求,再计算余下的天数的利息。
```java
public class ConstructionBank extends Bank {
private double year; // 存款年限(含小数部分)
public ConstructionBank(double savedMoney, double year) {
super(savedMoney, (int) year);
this.year = year;
}
@Override
public void calculateInterest() {
super.calculateInterest();
double days = (this.year - this.year % 1) * 365 + (this.year % 1) * 1000;
this.interest += days * 0.0001 * this.savedMoney;
}
}
public class BankOfDalian extends Bank {
private double year; // 存款年限(含小数部分)
public BankOfDalian(double savedMoney, double year) {
super(savedMoney, (int) year);
this.year = year;
}
@Override
public void calculateInterest() {
super.calculateInterest();
double days = (this.year - this.year % 1) * 365 + (this.year % 1) * 1000;
this.interest += days * 0.00012 * this.savedMoney;
}
}
```
最后,在测试类中创建建设银行 ConstructionBank 和大连银行 BankOfDalian 的实例,分别调用它们的 calculateInterest() 方法,计算出利息,并求出两个银行的利息差额。
```java
public class Test {
public static void main(String[] args) {
double savedMoney = 8000;
double year = 5.236;
ConstructionBank cb = new ConstructionBank(savedMoney, year);
cb.calculateInterest();
BankOfDalian bod = new BankOfDalian(savedMoney, year);
bod.calculateInterest();
double interestDiff = bod.getInterest() - cb.getInterest();
System.out.printf("建设银行利息:%.2f,大连银行利息:%.2f,差额:%.2f",
cb.getInterest(), bod.getInterest(), interestDiff);
}
}
```
输出结果为:
```
建设银行利息:1176.80,大连银行利息:1246.12,差额:69.32
```
阅读全文