某公司的人员分为员工和经理两种,但经理也属于员工中的一种,公司的人员都有自己的姓名和地址,员工和经理都有自己的工号、工资、工龄等属性,但经理不同员工的是,经理有自己在公司对应的级别。假设每次给员工涨工资一次能涨10,经理能涨20%。本案例要求利用多态实现给员工和经理涨工资。
时间: 2023-04-27 21:01:27 浏览: 293
基于java公司员工考勤管理系统设计与实现.docx
5星 · 资源好评率100%
这个案例可以使用面向对象的多态来实现给员工和经理涨工资。首先,可以定义一个员工类,包含姓名、地址、工号、工资、工龄等属性,以及一个涨工资的方法。然后,可以定义一个经理类,继承员工类,增加一个级别属性,并重写涨工资的方法,使经理能够涨20%的工资。最后,可以定义一个公司类,包含员工和经理的列表,以及一个给所有员工涨工资的方法,该方法通过多态实现给员工和经理涨工资。
具体实现可以参考以下代码:
```
class Employee:
def __init__(self, name, address, emp_id, salary, work_years):
self.name = name
self.address = address
self.emp_id = emp_id
self.salary = salary
self.work_years = work_years
def raise_salary(self, amount):
self.salary += amount
class Manager(Employee):
def __init__(self, name, address, emp_id, salary, work_years, level):
super().__init__(name, address, emp_id, salary, work_years)
self.level = level
def raise_salary(self, amount):
self.salary += self.salary * .2
class Company:
def __init__(self):
self.employees = []
def add_employee(self, employee):
self.employees.append(employee)
def raise_salary(self, amount):
for employee in self.employees:
employee.raise_salary(amount)
company = Company()
employee1 = Employee('张三', '北京市', '001', 500, 3)
employee2 = Employee('李四', '上海市', '002', 600, 4)
manager1 = Manager('王五', '广州市', '003', 800, 5, '高级经理')
manager2 = Manager('赵六', '深圳市', '004', 10000, 6, '总经理')
company.add_employee(employee1)
company.add_employee(employee2)
company.add_employee(manager1)
company.add_employee(manager2)
company.raise_salary(10)
```
在上面的代码中,首先定义了一个员工类Employee,包含姓名、地址、工号、工资、工龄等属性,以及一个涨工资的方法raise_salary。然后,定义了一个经理类Manager,继承自员工类,增加了一个级别属性level,并重写了涨工资的方法raise_salary,使经理能够涨20%的工资。最后,定义了一个公司类Company,包含员工和经理的列表employees,以及一个给所有员工涨工资的方法raise_salary,该方法通过多态实现给员工和经理涨工资。
在主程序中,创建了两个员工和两个经理,并添加到公司的员工列表中。然后,调用公司的raise_salary方法,给所有员工涨了10元工资。由于经理重写了raise_salary方法,所以经理的涨工资方式不同于员工,能够涨20%的工资。
阅读全文