package com.lmdedu.homework;
/**
* 通过继承实现 员工工资核算打印功能
* 父类:员工类
* 子类:部门经理manager类,普通员工worker类
* 1、经理工资 = 1000+单日工资*天数*等级(1.2)
* 2、普通工资 = 单日工资*天数*等级(1.0)
* 3、员工类属性 name 单日工资 工作天数
* 4、员工方法 打印工资
* 5、部门经理manager类,普通员工worker类 需要重写打印工资方法
* 6、定义并初始化普通员工对象,并调用打印工资方法,输出工资
* 定义并初始化经理对象,并调用打印工资方法,输出工资
*/
public class Homework04 {
public static void main(String[] args) {
worker jjf = new worker("jjf", 200, 30, 1.0,0);
jjf.print();
manager lmd = new manager("lmd", 300, 30, 1.2);
//通过set使得奖金的设置更为灵活
lmd.setBonus(1000);
lmd.print();
}
}
//员工类
class Employee{
//属性
private String name;
private double salary;
private int workday;
private double grade;
//构造器
public Employee(String name, double salary, int workday, double grade) {
this.name = name;
this.salary = salary;
this.workday = workday;
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public int getWorkday() {
return workday;
}
public void setWorkday(int workday) {
this.workday = workday;
}
public double getGrade() {
return grade;
}
public void setGrade(double grade) {
this.grade = grade;
}
//toString
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", salary=" + salary +
", workday=" + workday +
", grade=" + grade +
'}';
}
public double compute(){
return getSalary() * getWorkday() * getGrade();
}
public void print(){
System.out.println(getName() + " 工资为" + compute());
}
}
//经理类
class manager extends Employee{
//经理多一个奖金 bonus
private double bonus;
public manager(String name, double salary, int workday, double grade) {
super(name, salary, workday, grade);
}
public double getBonus() {
return bonus;
}
public void setBonus(double bonus) {
this.bonus = bonus;
}
//重写print
public void print(){
System.out.println("经理工资");
System.out.println(getName() + " 工资为 " + (getBonus()+super.compute()));
}
}
//工人类
class worker extends Employee{
public worker(String name, double salary, int workday, double grade, double bonus) {
super(name, salary, workday, grade);
}
//重写print
public void print(){
System.out.println("普通员工");
//复用父类的方法
super.print();
}
}