宁夏网站建设多少钱,建网站赚钱,深圳网站建设 联雅,软文推广文案【案例4-6】经理与员工工资案例#xff08;利用多态实现#xff09;
欢迎点赞关注收藏
【案例介绍】
案例描述
某公司的人员分为员工和经理两种#xff0c;但经理也属于员工中的一种#xff0c;公司的人员都有自己的姓名和地址#xff0c;员工和经理都有自己的工号、工…【案例4-6】经理与员工工资案例利用多态实现
欢迎点赞关注收藏
【案例介绍】
案例描述
某公司的人员分为员工和经理两种但经理也属于员工中的一种公司的人员都有自己的姓名和地址员工和经理都有自己的工号、工资、工龄等属性但经理不同员工的是经理有自己在公司对应的级别。假设每次给员工涨工资一次能涨10经理能涨20%。本案例要求利用多态实现给员工和经理涨工资。
运行结果
【案例分析】
1创建父类Person类在Person类中定义name和address属性并定义该类的构造方法。
2创建抽象类Employee类并继承Person类创建构造方法在构造方法中调用父类的构造方法。在Employee类中定义员工的ID、工资wage、年龄age等属性在类中定义涨工资的抽象方法add()通过对职位的判断来给员工或经理涨工资。
3创建子类Manager类并继承Employee类创建构造方法在构造方法中调用父类的构造方法由于经理有两种身份既是Employee又是Manager所以Manager类继承Employee类在Manager类中定义等级属性level并给出level的getter和setter方法实现Employee类的add()抽象方法。
4创建测试类对Manager进行实例化传入参数调用涨薪方法传入级别level参数根据级别level输出涨薪工资。
【案例实现】
Person.java
public class Person { private String name ; private String address ; //定义构造方法 public Person(String name, String address){ this.name name; this.address address; }}
上述代码中创建了一个父类Person类在Person类中定义了name和address属性以及Person类的构造方法。
Employee.java
public abstract class Employee extends Person { private String ID ; private double wage 0; private int age 0; 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 abstract void add(String position); //设置get/set方法 public double getWage() { return wage; } public void setWage(double wage) { this.wage wage; }}
上述代码中创建了一个Employee类并继承了Person类在Employee类中定义了Employee类的构造方法并在构造方法中调用了父类Person的构造方法定义了员工的name和wage和age属性并提供了setter和getter方法定义了抽象方法add()。
Manager.java
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 void add(){ double wage super.getWage(); super.setWage(wage*1.1); }public void add(String position){ double wage super.getWage(); super.setWage(wage*1.2); }public String getLevel() { return level; }public void setLevel(String level) { this.level level; }}
上述代码中创建了一个Manager类并继承了Employee类在Manager类中定义了Manager类的构造方法并在构造方法中调用了父类Employee的构造方法定义了员工的级别level属性并提供了setter和getter方法实现了Employee类的抽象方法add()并对add()方法进行了重载。
Test.java
public class Test { public static void main(String[] args) { Manager normal new Manager(wsl, jit, 12, 1000, 2, 1); Manager manager new Manager(ctl, jitt, 123, 10000, 10, 0); normal.add(); manager.add(manager.getLevel()); System.out.println(normal wage is:normal.getWage()); System.out.println(manager wage is:manager.getWage()); }}
上述代码中创建了一个测试类Test类在类中对Manager进行了实例化并传参。类中通过调用无参的add()方法来获取普通员工的涨薪调用有参的add(manager.getLevel())方法来获取经理的涨薪。