Java向上转型技术练习

向上转型技术练习(建立的源文件有Employee.java、各个子类YearWorker、MonthWorker和WeekWorker的源文件,Company.java和CompanyTest.java)
要求:
1)创建一个类名为Employee。
Employee类有一个方法earnings(),用来计算年薪,返回值类型为double;
public double earnings(){
System.out.println("员工发工资");
return 0;
}
2)Employee的子类有YearWorker、MonthWorker和WeekWorker,各个子类给出各自领取薪水的具体earnings()方式。
YearWorker对象按年领取薪水(年薪80万),
MonthWorker按月领取薪水(每月8000元),
WeekWorker按周领取薪水(每周1500元);
3) 建立一个Company类:
成员变量salaries //保存公司发放的薪水,
成员方法salariesPay() //用于计算某公司需要发放的全部员工的薪水总数,根据需要此方法可以带参数。
4) 创建测试类CompanyTest,在main()方法中,创建Company类的某个对象,输出其一年所有员工需要支付的薪水总额。

Employee.java

public class Employee {
    public double earnings() {
        System.out.println("员工发工资");
        return 0;
    }
}

YearWorker.java

public class YearWorker extends Employee {
    @Override
    public double earnings() {
        return 800000;
    }
}

MonthWorker.java

public class MonthWorker extends Employee {
    @Override
    public double earnings() {
        return 8000 * 12;
    }
}

WeekWorker.java

public class WeekWorker extends Employee {
    @Override
    public double earnings() {
        return 1500 * 52;
    }
}

Company.java

public class Company {
    private double salaries;

    public Company() {
        salaries = 0;
    }

    public void salariesPay(Employee employee) {
        salaries += employee.earnings();
    }

    public double getSalaries() {
        return salaries;
    }
}

CompanyTest.java

public class CompanyTest {
    public static void main(String[] args) {
        Company company = new Company();
        YearWorker yearWorker = new YearWorker();
        MonthWorker monthWorker = new MonthWorker();
        WeekWorker weekWorker = new WeekWorker();

        company.salariesPay(yearWorker);
        company.salariesPay(monthWorker);
        company.salariesPay(weekWorker);

        System.out.println("公司需要支付的薪水总额为:" + company.getSalaries());
    }
}