Java面向对象高级特性-多态-练习题

涎涎原创约 1719 字大约 6 分钟...JavaJava

202-Java面向对象高级特性-多态-练习题.mdopen in new window

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

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