【案例4-6】经理与员工工资案例(利用多态实现)

本文通过一个案例介绍了如何使用Java的多态特性来处理经理与员工的工资问题。员工和经理均有各自的属性,如工号、工资、工龄等,经理还有级别。案例中,员工涨薪10%,经理涨薪20%。文章详细讲解了利用继承和方法重载实现这一功能的步骤,包括创建Person、Employee和Manager类,以及测试类的编写和运行。最终展示了运行结果。

【案例介绍】

1. 案例描述

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

2. 运行结果

姓名:张三,地址:编程村,工龄:2,工号:12,级别:B,工资:1100.0

姓名:李四,地址:外太空,工龄:10,工号:123,级别:A,工资:12000.0

【案例目标】

l 学会利用继承特性实现“经理与员工工资案例”的实现思路。

l 独立完成“经理与员工工资案例”的源代码编写、编译及运行。

l 掌握多态的概念及其应用。

l 掌握方法的重载的概念及其应用。

【案例分析】

(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输出涨薪工资,并同时显示员工相应的信息。

package 作业3;
 class Person {                         //创建父类Person类
   private String name;
   private String 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;
    }
    public Person(String name, String address){        //定义构造方法
         this.name = name;
         this.address = address;
    }
}

     abstract class Employee extends Person {                  //创建抽象类Employee类
       private int ID;
       private int wage;
       private int age;

         public Employee(String name, String address, int ID,int wage, int age) {
             super(name, address);
             this.ID = ID;
             this.wage = wage;
             this.age = age;
         }

         public int getID() {
             return ID;
         }

         public void setID(int ID) {
            this.ID = ID;
        }

        public int getWage() {
            return wage;
        }

        public void setWage(int wage) {
            this.wage = wage;
        }

         public int getAge() {
             return age;
         }

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

        abstract void add(String level);                 //定义抽象方法

    }

     class Manager extends Employee {
        private String level;

         public Manager(String name, String address, int ID, int 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;
        }
         public void add(String level) {                      //实现抽象方法
             if ("B".equals(level)) {
                 setWage((int) (getWage() * 1.1));
             } else if ("A".equals(level)) {
                 setWage((int) (getWage() * 1.2));
             }

         }


    }

    public class text {                       //创建测试类text类
        public  static void main(String[] args) {
          Manager normal = new Manager("张三","编程村", 12,1000,2,"B" );
          Manager manager = new Manager("李四","外太空",123,10000,10,"A");
            normal.add(normal.getLevel());
            manager.add(manager.getLevel());
            System.out.println("姓名:"+ normal.getName()+", 地址: "+normal.getAddress()+", 工龄:"+normal.getAge()+", 工号:"+normal.getID()+", 级别:"+normal.getLevel()+", 工资:"+normal.getWage());

            System.out.println("姓名:"+ manager.getName()+", 地址: "+manager.getAddress()+", 工龄:"+manager.getAge()+", 工号:"+manager.getID()+", 级别:"+manager.getLevel()+", 工资:"+manager.getWage());

        }
    }

 运行结果为


这篇文章的主要贡献者是@不吃香菜的小孩

如果你有意见或建议,可以在评论区发表评论哦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值