【案例4-7】经理与员工工资案例

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

    }
}

结果展示

 

  • 3
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这个案例可以使用面向对象的思想来实现,可以定义一个 `Employee` 员工类和一个 `Manager` 经理类,其 `Employee` 类包含了员工的基本信息和工资计算方法,`Manager` 类则继承了 `Employee` 类,并添加了管理津贴的计算方法。 以下是一个简单的示例代码: ```c++ #include <iostream> #include <string> using namespace std; class Employee { protected: string name; // 员工姓名 int salary; // 员工薪水 public: Employee(const string& name, int salary) : name(name), salary(salary) {} virtual int getSalary() const { return salary; } // 计算员工薪水 virtual void printInfo() const { // 输出员工信息 cout << "Name: " << name << endl; cout << "Salary: " << salary << endl; } }; class Manager : public Employee { private: int bonus; // 管理津贴 public: Manager(const string& name, int salary, int bonus) : Employee(name, salary), bonus(bonus) {} int getSalary() const override { return salary + bonus; } // 计算经理薪水 void printInfo() const override { // 输出经理信息 cout << "Name: " << name << endl; cout << "Salary: " << getSalary() << endl; cout << "Bonus: " << bonus << endl; } }; int main() { Employee employee("Alice", 5000); Manager manager("Bob", 8000, 2000); employee.printInfo(); manager.printInfo(); return 0; } ``` 在上面的代码,`Employee` 和 `Manager` 类分别代表了员工经理,其 `Employee` 类包含了员工的基本信息和工资计算方法,`Manager` 类则继承了 `Employee` 类,并添加了管理津贴的计算方法。在 `main` 函数,我们创建了一个 `Employee` 类型的对象 `employee` 和一个 `Manager` 类型的对象 `manager`,并分别调用它们的 `printInfo` 方法,输出它们的信息和薪水。 注意,在上面的代码,`Employee` 类的 `getSalary` 方法和 `Manager` 类的 `getSalary` 方法都被声明为 `virtual`,这是为了实现多态。这样,当我们通过基类指针或引用调用这些方法时,会根据对象的实际类型来调用对应的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩气长存在心中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值