public class Person {
private String code;
private String name;
private int age;
private double salary;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
interface PersonImpl{
double pay();
}
class Teacher extends Person implements PersonImpl{
private int classTime;
private int price;
public Teacher(String code
, String name
, int age
, double salary
, int classTime
, int price){
super.setCode(code);
super.setName(name);
super.setAge(age);
super.setSalary(salary);
this.classTime = classTime;
this.price = price;
}
@Override
public double pay() {
return super.getSalary() + (this.price * this.classTime);
}
@Override
public String toString() {
return String.format("Teacher [code=%s, name=%s, age=%s, salary=%s, teachingHours=%s, price=%s, pay=%s]"
, super.getCode(), super.getName(), super.getAge(), super.getSalary(), this.classTime, this.price, pay());
}
}
class Labworker extends Person implements PersonImpl{
private int day;
public Labworker(String code
, String name
, int age
, double salary
, int day){
super.setCode(code);
super.setName(name);
super.setAge(age);
super.setSalary(salary);
this.day = day;
}
@Override
public double pay() {
return super.getSalary() + (50 * this.day);
}
@Override
public String toString() {
return String.format("Labworker [code=%s, name=%s, age=%s, salary=%s, workingHours=%s, pay=%s]"
, super.getCode(), super.getName(), super.getAge(), super.getSalary(), this.day, pay());
}
}
class Manage extends Person implements PersonImpl{
private int allowance;
public Manage(String code
, String name
, int age
, double salary
, int allowance){
super.setCode(code);
super.setName(name);
super.setAge(age);
super.setSalary(salary);
this.allowance = allowance;
}
@Override
public double pay() {
return super.getSalary() + this.allowance;
}
@Override
public String toString() {
return String.format("Manage [code=%s, name=%s, age=%s, salary=%s, gangtie=%s, pay=%s]"
, super.getCode(), super.getName(), super.getAge(), super.getSalary(), this.allowance, pay());
}
}
class Test{
public static void main(String[] args) {
List<PersonImpl> list = new ArrayList<>();
Teacher teacher = new Teacher("001", "李强", 38, 5000, 60, 30);
Labworker labworker = new Labworker("002", "张萌", 25, 3000, 60);
Manage manage = new Manage("003", "黄渤", 50, 6000, 2500);
list.add(teacher);
list.add(labworker);
list.add(manage);
list.forEach(System.out::println);
}
}