Java面向对象高级特性-多态-练习题
原创约 1719 字大约 6 分钟...
202-Java面向对象高级特性-多态-练习题.md
注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
Cola公司的雇员分为以下若干类
4、 Cola公司的雇员分为以下若干类:(知识点:多态) [必做题]
4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工的生日月份。
方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100 元。
4.2 SalariedEmployee : ColaEmployee 的子类,拿固定工资的员工。属性:月薪
4.3 HourlyEmployee :ColaEmployee 的子类,按小时拿工资的员工,每月工作超出160
小时的部分按照1.5 倍工资发放。属性:每小时的工资、每月工作的小时数
4.4 SalesEmployee :ColaEmployee 的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率
4.5 定义一个类Company,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额,写一个测试类TestCompany,
在main方法,把若干各种类型的员工放在一个ColaEmployee 数组里,并单元出数组中每个员工当月的工资。
示例代码
package com.tencent.chapter07.多态.练习;
/**
* <p>Title: ColaEmployee</p>
* <p>
* Description:
* /**
* 4、 Cola公司的雇员分为以下若干类:(知识点:多态) [必做题]
4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工的生日月份。
方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100 元。
4.2 SalariedEmployee : ColaEmployee 的子类,拿固定工资的员工。属性:月薪
4.3 HourlyEmployee :ColaEmployee 的子类,按小时拿工资的员工,每月工作超出160
小时的部分按照1.5 倍工资发放。属性:每小时的工资、每月工作的小时数
4.4 SalesEmployee :ColaEmployee 的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率
4.5 定义一个类Company,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额,写一个测试类TestCompany,
在main方法,把若干各种类型的员工放在一个ColaEmployee 数组里,并单元出数组中每个员工当月的工资。
*
//4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(int month)
* 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100 元。
*
* </p>
* @author xianxian
* @date 2023年1月4日
*/
public class ColaEmployee {
//属性:员工的姓名,员工的生日月份
String ename;
int birthMonth;
//构造函数
public ColaEmployee()
{
}
public ColaEmployee(String ename,int birthMonth)
{
this.ename = ename;
this.birthMonth = birthMonth;
}
//方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100 元。
public double getSalary(int month)
{
return 0.0;
}
}
package com.tencent.chapter07.多态.练习;
/**
* <p>Title: HourlyEmployee</p>
* <p>
* Description:
* //4.3 HourlyEmployee :ColaEmployee 的子类,按小时拿工资的员工,每月工作超出160 小时的部分按照1.5
* 倍工资发放。属性:每小时的工资、每月工作的小时数
* </p>
* @author xianxian
* @date 2023年1月4日
*/
public class HourlyEmployee extends ColaEmployee {
//属性:每小时的工资、每月工作的小时数
double hourSalary;
int hours;
//构造函数
public HourlyEmployee()
{
}
public HourlyEmployee(String ename,int birthMonth,double hourSalary,int hours)
{
super(ename, birthMonth);
this.hourSalary = hourSalary;
this.hours = hours;
}
//按小时拿工资的员工,每月工作超出160 小时的部分按照1.5 倍工资发放
@Override
public double getSalary(int month) {
double totalSalary = 0.0;
//每月工作超出160 小时的部分按照1.5 倍工资发放
if(hours <=160)
{
totalSalary = hourSalary * hours;
}
else
{
totalSalary = hourSalary * 160 + hourSalary * 1.5 * (hours-160);
}
//如果该月员工过生日,则公司会额外奖励100 元。
if(birthMonth == month)
{
totalSalary += 100;
}
return totalSalary;
}
}
package com.tencent.chapter07.多态.练习;
/**
* <p>Title: SalariedEmployee</p>
* <p>
* Description:
* //4.2 SalariedEmployee : ColaEmployee 的子类,拿固定工资的员工。属性:月薪
* </p>
* @author xianxian
* @date 2023年1月4日
*/
public class SalariedEmployee extends ColaEmployee {
//属性:月薪
double monthSalary;
//构造函数
public SalariedEmployee()
{
}
public SalariedEmployee(String ename,int birthMonth,double monthSalary)
{
super(ename, birthMonth);
this.monthSalary = monthSalary;
}
//重写父类的getSalary方法,获取月薪
@Override
public double getSalary(int month) {
double totalSalary = monthSalary;
//如果该月员工过生日,则公司会额外奖励100 元。
if(birthMonth == month)
{
totalSalary += 100;
}
return totalSalary;
}
}
package com.tencent.chapter07.多态.练习;
/**
* <p>Title: SalesEmployee</p>
* <p>
* Description:
* //4.4 SalesEmployee :ColaEmployee 的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率
* </p>
* @author xianxian
* @date 2023年1月4日
*/
public class SalesEmployee extends ColaEmployee {
//属性:月销售额、提成率
double monthSales;
double rate;
//构造函数
public SalesEmployee()
{
}
public SalesEmployee(String ename,int birthMonth,double monthSales,double rate)
{
super(ename, birthMonth);
this.monthSales = monthSales;
this.rate = rate;
}
@Override
public double getSalary(int month) {
//销售人员,工资由月销售额和提成率决定
double totalSalary = monthSales * rate;
//如果该月员工过生日,则公司会额外奖励100 元。
if(birthMonth == month)
{
totalSalary += 100;
}
return totalSalary;
}
}
package com.tencent.chapter07.多态.练习;
/**
* <p>Title: TestCompany</p>
* <p>
* Description:
* //4.5 定义一个类Company,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额,
//写一个测试类TestCompany,在main方法,把若干各种类型的员工放在一个ColaEmployee 数组里,并单元出数组中每个员工当月的工资。
* </p>
* @author xianxian
* @date 2023年1月4日
*/
public class TestCompany {
public static void main(String[] args) {
//月薪
SalariedEmployee salariedEmployee = new SalariedEmployee("张三", 6, 7000);
//System.out.println(salariedEmployee.getSalary(9));//7000
//System.out.println(salariedEmployee.getSalary(6));//7100
//时薪
HourlyEmployee hourlyEmployee = new HourlyEmployee("李四", 9, 300, 150);
//System.out.println(hourlyEmployee.getSalary(9));//45100.0
HourlyEmployee hourlyEmployee2 = new HourlyEmployee("李二四", 10, 300, 200);
//System.out.println(hourlyEmployee2.getSalary(9));//66000.0
//销售提成
SalesEmployee salesEmployee = new SalesEmployee("王五", 3, 500000, 0.02);
//System.out.println(salesEmployee.getSalary(9));//10000.0
//System.out.println(salesEmployee.getSalary(3));//10100.0
//1. 把若干各种类型的员工放在一个ColaEmployee 数组里
ColaEmployee[] emps = new ColaEmployee[]{salariedEmployee,hourlyEmployee,hourlyEmployee2,salesEmployee};
//2.并单元出数组中每个员工当月的工资。
for (ColaEmployee emp : emps) {
Company.print(emp, 9);
}
}
}
//4.5 定义一个类Company,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额
class Company
{
//调用该方法可以打印出某月某个员工的工资数额
public static void print(ColaEmployee emp,int month)
{
double totalSalary = emp.getSalary(month);
System.out.println(emp.ename + ":第[" + month + "]月份的工资为:" + totalSalary);
}
}
分割线
相关信息
以上就是我关于 Java面向对象高级特性-多态-练习题 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。。
Powered by Waline v2.15.4