要求有一个abstract类,类名为Employee。Employee的子类有YearWorker、MonthWorker和WeekWorker。YearWorker对象按年薪领取薪水,MonthWorker按月领取薪水,WeekWorker按周领取薪水。Employee类有一个abstract方法:Public abstract earnings();子类必须重写父类的earnings()方法,给出各自领取报酬的具体方式。有一个Company类,该类用Employee数组作为成员,Employee数组的单元可以是YearWorker对象的上转型对象、MonthWorker对象的上转型对象或WeekWorker对象的上转型对象。程序能输出Company对象一年需要支付的薪水总额。
package homework;
/*
File name:Company.cpp
Author:杨柳
Date:2017/11/6
IDE:eclipse
*/
class Company {
Employee[] em; //Employee作为成员
Company(Employee[] em) { //构造函数
this.em=em;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Employee[] em=new Employee[3];
em[0]=new YearWorker(1,12000.0); //上转型对象
em[1]=new MonthWorker(11,8000.0);
em[2]=new WeekWorker(40,1200.0);
Company com=new Company(em);
double sum;
sum=em[0].earnings()+em[1].earnings()+em[2].earnings();
System.out.println("总工资为:"+sum);
}
}
abstract class Employee {
abstract double earnings(); //抽象方法
}
class MonthWorker extends Employee {
int month;
double monthSalary;
MonthWorker(int m,double s){
month=m;
monthSalary=s;
}
double earnings() {
return month*monthSalary;
}
}
class WeekWorker extends Employee {
int week;
double weekSalary;
WeekWorker(int w,double s){
week=w;
weekSalary=s;
}
double earnings() {
return week*weekSalary;
}
}
class YearWorker extends Employee {
int year;
double yearSalary;
YearWorker(int y,double s){ //工作年数,年工资
year=y;
yearSalary=s;
}
double earnings() { //重写抽象方法
return year*yearSalary;
}
}
更多推荐
有一个abstract类,类名为Employee
发布评论