案例描述:
某公司的人员分为员工和经理两种,但经理也属于员工中的一种,公司的人员都有自己的姓名和地址,员工和经理都有自己的工号、工资、工龄等属性,但经理不同员工的是,经理有自己在公司对应的级别。假设每次给员工涨工资一次能涨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();}
}
运行结果