Discuss / Java / oop-abstractclass

oop-abstractclass

Topic source

wxs2011133069

#1 Created at ... [Delete] [Delete and Lock User]
package com.itranswarp.learnjava;

/**
 * @Package: com.itranswarp.learnjava
 * @ClassName: Main
 * @Author: weixu
 * @CreateTime: 2021/8/16 20:38
 * @Description: oop-abstractclass
 */
public class Main {
    public static void main(String[] args) {
        // TODO: 用抽象类给一个有工资收入和稿费收入的小伙伴算税:
        Income[] incomes = new Income[]{ new SalaryIncome(7500), new RoyaltyIncome(12000)};
        double total = 0;
        // TODO:
        for (Income income : incomes) {
            total += income.getTax();
        }
        System.out.println(total);
    }
}

/**
 * 定义抽象类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;
        }
        return (income - 5000) * 0.2;
    }

}

/**
 * 稿费收入税率是20%
 */
class RoyaltyIncome extends Income {

    public RoyaltyIncome(double income) {
        super(income);
    }

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

  • 1

Reply