假设公司员工分为:雇员(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类。