Discuss / Java / 练习:用接口给一个有工资收入和稿费收入的小伙伴算税。

练习:用接口给一个有工资收入和稿费收入的小伙伴算税。

Topic source

韦雪松

#1 Created at ... [Delete] [Delete and Lock User]
/**
 * 定义接口Income
 */
interface Income {
    double getTax();
}


/**
 * 定义抽象类IncomeTax
 */
abstract class IncomeTax implements Income {
    protected final double income;

    public IncomeTax(double income) {
        this.income = income;
    }

    @Override
    public abstract double getTax();
}


/**
 * 工资收入计税
 */
class SalaryIncome extends IncomeTax implements Income {
    public SalaryIncome(double income) {
        super(income);
    }

    @Override
    public double getTax() {
        if (income <= 5000) {
            return 0;
        } else if (income > 5000 && income <= 10000) {
            return (income - 5000) * 0.1;
        } else {
            return (income - 10000) * 0.2 + 5000 * 0.1;
        }
    }
}

/**
 * 稿费收入计税
 */
class RoyaltyIncome extends IncomeTax implements Income {
    public RoyaltyIncome(double income) {
        super(income);
    }

    @Override
    public double getTax() {
        return income * 0.2;
    }
}

public class Main {
    public static void main(String[] args) {
        Income[] incomes = {new SalaryIncome(12000), new RoyaltyIncome(5000)};
        System.out.println(totalTax(incomes));
    }

    public static double totalTax(Income... incomes) {
        double total = 0;
        for (Income income : incomes) {
            total += income.getTax();
        }
        return total;
    }
}

  • 1

Reply