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

练习:用抽象类给一个有工资收入和稿费收入的小伙伴算税

Topic source

韦雪松

#1 Created at ... [Delete] [Delete and Lock User]
public class Main {
    public static void main(String[] args) {
        double totalTax = 0;
        Income[] incomes = {new SalaryIncome(12000), new RoyaltyIncome(5000)};
        for (Income income : incomes) {
            totalTax += income.getTax();
        }
        System.out.println(totalTax);
    }
}

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

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

    public abstract double getTax();
}

/**
 * 工资收入计税
 */
class SalaryIncome extends 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 Income {
    public RoyaltyIncome(double income) {
        super(income);
    }

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

韦雪松

#2 Created at ... [Delete] [Delete and Lock User]

从练习中可以看出虽然抽象类无法实例化但还是可以有构造方法的,目的是让子类继承并调用


  • 1

Reply