15.(封装、继承、super ) 某公司的雇员分为以下若干类 Employee: 这是所有员工总的父类,属性: 员工的姓名,员工的生日月份。方法getSalary(intmonth) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100 元。 SalariedEmployee: Employee 的子类,拿固定工资的员工。属性:月薪 HourlyEmployee: Employee 的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5 倍工资发放。属性: 每小时的工资、每月工作的小时数 SalesEmployee : Employee 的子类,销售人员,工资由月销售额和提成率决定属性 : 月销售额、提成率 BasePlusSalesEmployee: SalesEmployee 的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。属性: 底薪。根据要求创建 SalariedEmployee 、 HourlyEmployees 、SaleEmployee 和BasePlusSalesEmployee四个类的对象各一个,并计算某个月这四个对象的工资注意: 要求把每个类都做成完全封装,不允许非私有化属性。
时间: 2023-02-05 19:50:35 浏览: 108
在此回答中,我将使用 Python 语言来给出示例代码。
首先,我们需要定义一个名为 `Employee` 的父类,该类具有两个属性:姓名和生日月份,以及一个方法 `getSalary()`。
```
class Employee:
def __init__(self, name, birthday_month):
self.__name = name
self.__birthday_month = birthday_month
def getSalary(self, month):
salary = 0
if month == self.__birthday_month:
salary += 100
return salary
```
然后,我们可以定义四个子类来继承 `Employee` 类:`SalariedEmployee`、`HourlyEmployee`、`SalesEmployee` 和 `BasePlusSalesEmployee`。
```
class SalariedEmployee(Employee):
def __init__(self, name, birthday_month, salary):
super().__init__(name, birthday_month)
self.__salary = salary
def getSalary(self, month):
return super().getSalary(month) + self.__salary
class HourlyEmployee(Employee):
def __init__(self, name, birthday_month, hourly_wage, hours_worked):
super().__init__(name, birthday_month)
self.__hourly_wage = hourly_wage
self.__hours_worked = hours_worked
def getSalary(self, month):
salary = super().getSalary(month)
overtime_hours = max(0, self.__hours_worked - 160)
salary += overtime_hours * self.__hourly_wage * 1.5
salary += (self.__hours_worked - overtime_hours) * self.__hourly_wage
return salary
class SalesEmployee(Employee):
def __init__(self, name, birthday_month, sales, commission_rate):
super().__init__(name, birthday_month)
self.__sales = sales
self.__commission_rate = commission_rate
def getSalary(self, month):
return super().getSalary(month) + self.__sales * self.__commission_rate
class BasePlusSalesEmployee(SalesEmployee):
def __init__(self, name, birthday_month, sales, commission_rate, base_salary):
super().__init__(name, birthday_month, sales, commission_rate)
self.__base_salary = base_salary
def getSalary(self, month):
return super().getSalary(month) + self.__base_salary
阅读全文