某公司的人员分为员工和经理两种,但经理也属于员工中的一种,公司的人员都有自己的姓名和地址,员工和经理都有自己的工号、工资、工龄等属性,但经理不同员工的是,经理有自己在公司对应的级别。假设每次给员工涨工资一次能涨10,经理能涨20%。
本案例要求利用多态实现给员工和经理涨工资
此案例分为四个类 Employee Manager person Test四个类
Employee类
public abstract class Employee extends Person{
private String ID;
private double wage;
private int age;
public Employee(String name, String address, String ID, double wage, int age) {
super(name, address);
this.ID = ID;
this.wage = wage;
this.age = age;
}
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public double getWage() {
return wage;
}
public void setWage(double wage) {
this.wage = wage;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public abstract void add(String level);
}
Manager类
public class Manager extends Employee{
private String level;
public Manager(String name, String address, String ID, double wage, int age, String level) {
super(name, address, ID, wage, age);
this.level = level;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
@Override
public void add(String level) {
if ("0".equals(level)){
System.out.println("普通员工涨薪10%");
super.setWage(super.getWage()*1.1);
}else if ("1".equals(level)){
System.out.println("经理涨薪20%");
super.setWage(super.getWage()*1.2);
}
}
}
person类
public class Person {
private String name;
private String address;
public Person(String name, String address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
Test类
public class Test {
public static void main(String[] args) {
Manager m1=new Manager("张三","北京","001",10000,23,"1");
Manager m2=new Manager("李四","北京","001",10000,23,"0");
m1.add(m1.getLevel());
System.out.println(m1.getName()+"涨薪后"+m1.getWage());
m2.add(m2.getLevel());
System.out.println(m2.getName()+"涨薪后"+m2.getWage());
}
}
结果展示