类的重用,会的兄弟帮一下

假设公司员工分为:雇员(Employee)、经理(Manager)、技术员(Technician)、销售员(Salesman)和销售经理(SalesManager),他们分别包括如下属性:
Employee类:姓名、年龄、专业、固定工资
Manager类:姓名、年龄、固定工资、专业、级别、补贴
Technician类:姓名、年龄、固定工资、专业、工作时间、计时工资
Salesman类:姓名、年龄、固定工资、专业、销售额、销售提成比率
SalesManager类:姓名、年龄、固定工资、专业、补贴、销售额、销售提成比率
类中包括的成员方法(要完成操作有):
(1)构造方法;
(2)数据输入方法;
(3)数据输出方法;
(4)计算工资方法,计算工资方法如表1:
表1 工资计算方法
人员类别 固定工资 补贴 计时工资 销售提成
Employee 1500 0 0 0
Manager 8000 2000 0 0
Technician 1000 0 100(或根据实际情况修改) 0
Salesman 500 0 0 5%(或根据实际情况修改)
SaleManager 2000 1000 0 2%(或根据实际情况修改)

提示:把Employee类定义为抽象类,找到类之间的共性,用继承实现。

package com.eleven.csdn;


/**
 * @author eleven
 * @date 2021/8/25 10:47
 * @apiNote
 */
public class ElevenTest {
    public static void main(String[] args) {

    }
}

package com.eleven.csdn;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

/**
 * @author eleven
 * @date 2021/8/25 10:22
 * @apiNote
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public abstract class Employee {
    /**
     * 姓名
     */
    public String name;
    /**
     * 年龄
     */
    public Integer age;
    /**
     * 专业
     */
    public String major;
    /**
     * 基本工资
     */
    public Double fixedSalary;

    public Double getSalary() {
        return fixedSalary + 0 + 0 + 0;
    }
}

package com.eleven.csdn;

import lombok.Data;
/**
 * @author eleven
 * @date 2021/8/25 10:28
 * @apiNote 管理员
 */
@Data
public class Manager extends Employee{
    /**
     * 级别
     */
    private Integer level;
    /**
     * 补贴
     */
    private Double subsidy;

    public Manager(String name, Integer age, String major, Double fixedSalary,
                    Integer level,Double subsidy) {
        super(name, age, major, fixedSalary);
        this.level = level;
        this.subsidy = subsidy;
    }

    @Override
    public Double getSalary() {
        return fixedSalary + subsidy + 0 + 0;
    }
}

package com.eleven.csdn;

import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author eleven
 * @date 2021/8/25 10:33
 * @apiNote 销售员
 */
@Data
@NoArgsConstructor
public class Salesman extends Employee{
    /**
     * 销售额
     */
    private Double sale;
    /**
     * 提成
     */
    private Double royalty;

    public Salesman(String name, Integer age, String major, Double fixedSalary,
                    Double sale,Double royalty) {
        super(name, age, major, fixedSalary);
        this.royalty = royalty;
        this.sale = sale;
    }

    @Override
    public Double getSalary() {
        return fixedSalary + 0 + 0 + sale * 5 / 100;
    }
}

package com.eleven.csdn;

import lombok.Data;
/**
 * @author eleven
 * @date 2021/8/25 10:38
 * @apiNote
 */
@Data
public class SalesManager extends Salesman{
    /**
     * 补贴
     */
    private Double subsidy;

    public SalesManager(String name, Integer age, String major, Double fixedSalary,
                        Double sale, Double royalty,Double subsidy) {
        super(name, age, major, fixedSalary, sale, royalty);
        this.subsidy = subsidy;
    }

    @Override
    public Double getSalary() {
        return fixedSalary + subsidy + 0 + getSale() * 2 / 100;
    }
}
package com.eleven.csdn;

import lombok.Data;
/**
 * @author eleven
 * @date 2021/8/25 10:31
 * @apiNote 技术员
 */
@Data
public class Technician extends Employee{
    /**
     * 工作时间
     */
    private Double workTime;
    /**
     * 计时工资
     */
    private Double timeSalary;

    public Technician(String name, Integer age, String major, Double fixedSalary,
                      Double workTime,Double timeSalary) {
        super(name, age, major, fixedSalary);
        this.timeSalary = timeSalary;
        this.workTime = workTime;
    }

    @Override
    public Double getSalary() {
        return fixedSalary + 0 + timeSalary + 0;
    }
}

首先定义一个Employee类,属性包含:姓名、年龄、专业、固定工资
Manager类,Technician类,Salesman类继承(extends)Employee类,再加上该类特有的属性
SalesManager类继承Salesman类。