public class Main {
public static void main(String[] args) {
// TODO: 用接口给一个有工资收入和稿费收入的小伙伴算税:
Income[] incomes = new Income[] { new BaseIncome(3000), new SalaryIncome(7500), new RoyaltyIncome(12000) };
double total = 0;
// TODO:
for (Income income: incomes) {
total = total + income.getTax();
}
System.out.println(total);
/**
* 定义接口Income
*/
public interface Income {
// TODO
double getTax();
* 稿费收入税率是10%
public class BaseIncome implements Income{
private double income;
public BaseIncome(double income) {
this.income = income;
public double getTax() {
return income * 0.1;
* 稿费收入税率是20%
public class RoyaltyIncome implements Income{
public RoyaltyIncome(double income) {
return income * 0.2;
public class SalaryIncome implements Income{
public SalaryIncome(double income) {
return 0;
我也有点奇怪,就相当于是接口类型的incom变量指向了子类类型的实例,和抽象类一样了,这样可以嘛。。
可以先写一个接口,然后写一个抽象类实现接口,再写两个普通类继承抽象类
Sign in to make a reply
发条与库奇
public class Main {
public static void main(String[] args) {
// TODO: 用接口给一个有工资收入和稿费收入的小伙伴算税:
Income[] incomes = new Income[] { new BaseIncome(3000), new SalaryIncome(7500), new RoyaltyIncome(12000) };
double total = 0;
// TODO:
for (Income income: incomes) {
total = total + income.getTax();
}
System.out.println(total);
}
}
/**
* 定义接口Income
*/
public interface Income {
// TODO
double getTax();
}
/**
* 稿费收入税率是10%
*/
public class BaseIncome implements Income{
// TODO
private double income;
public BaseIncome(double income) {
this.income = income;
}
public double getTax() {
return income * 0.1;
}
}
/**
* 稿费收入税率是20%
*/
public class RoyaltyIncome implements Income{
// TODO
private double income;
public RoyaltyIncome(double income) {
this.income = income;
}
public double getTax() {
return income * 0.2;
}
}
public class SalaryIncome implements Income{
// TODO
private double income;
public SalaryIncome(double income) {
this.income = income;
}
public double getTax() {
return 0;
}
}