案例描述:

某公司的人员分为员工和经理两种,但经理也属于员工中的一种,公司的人员都有自己的姓名和地址,员工和经理都有自己的工号、工资、工龄等属性,但经理不同员工的是,经理有自己在公司对应的级别。假设每次给员工涨工资一次能涨10,经理能涨20%。本案例要求利用多态实现给员工和经理涨工资。

代码实现

//父类:公司人员类
abstract class person {
public String name; //姓名
public String address; //地址
public person(String name, String address){
this.name=name;
this.address=address;
}

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setAddress(String address) {
this.address = address;
}

public String getAddress() {
return address;
}

public void add(){

}
}

//子类:员工类
class employee extends person {
public String id;
public double salary;
public int age;

public employee(String name, String address,String id,double salary,int age) {
super(name, address);
this.id=id;
this.salary =salary;
this.age=age;
}

public String getId() {
return id;
}

public double getSalary() {
return salary;
}

public int getAge() {
return age;
}

public void setId(String id) {
this.id = id;
}

public void setSalary(double salary) {
this.salary = salary;
}

public void setAge(int age) {
this.age = age;
}

public void add(){
salary*=1.1;
}

public String getID() {
return id;
}
}
//子类:经理类
class manager extends employee{

public String rank;
public manager(String name, String address, String id, double salary, int age,String rank) {
super(name, address, id, salary, age);
this.rank=rank;
}

public String getRank() {
return rank;
}

public void setRank(String rank) {
this.rank = rank;
}
public void add(){
salary*=1.2;
}

}

public class Ex4_7 {
public static void main(String[] args) {
employee worker = new employee("张三", "郑州", "1001", 4000.0, 2);
manager manager1 = new manager("李四", "郑州", "1122", 8000.0, 5, "经理");
manager manager2 = new manager("王五", "郑州", "1100", 10000.0, 4, "高级经理");
print(worker);
print(manager1);
print(manager2);
}
public static void print(employee a){
System.out.println("----------------------普通员工信息表---------------------");
System.out.println("|姓名|\t\t"+"|工号|\t\t"+"|工资|\t\t"+"|工龄|\t\t"+"|地址|");
System.out.println(a.getName() + "\t\t\t"+a.getID()+"\t\t"+a.getSalary()+"\t\t "+a.getAge()+"\t\t\t"+a.getAddress());
a.add();
System.out.println("-------------------------------------------------------");
System.out.println("由于"+a.getName()+ "在公司辛勤工作,因此公司决定鼓励,涨薪为:" + a.getSalary());
System.out.println();
}
public static void print(manager a){
System.out.println("----------------------经理阶层信息表----------------------------");
System.out.println("|姓名| \t"+"|工号| \t"+"|职称| \t"+"|工资| \t"+"|工龄| \t"+"|地址|");
System.out.println(a.getName() + " \t"+a.getID()+" \t"+a.getRank()+" \t"+a.getSalary()+"\t "+a.getAge()+" \t"+a.getAddress());
a.add();
System.out.println("-------------------------------------------------------------");
System.out.println("由于"+a.getName()+ "在公司辛勤工作,因此公司决定鼓励,涨薪为:" + a.getSalary());
System.out.println();
}
}

运行结果

pCgN5wD.png