Java第二次实验——类的层次结构(1)

本文详述了一次Java实验,旨在构建类的层次结构,包括Employee、SalariedEmployee、CommissionEmployee、HourlyEmployee和BaseplusEmployee等类。实验要求实现了各类的构造函数、get/set方法、输入输出属性以及特定业务逻辑,如计算年休假天数和年终奖金。此外,文章还讨论了Eclipse自动生成构造函数、get/set方法的重要性以及Java的继承特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 实验目的

建立类的层次结构。

二.实验要求

创建如下图所示的类(使用类层次结构中的类)
在这里插入图片描述

   Employee ( 姓名,性别,保险号、工作年限) 构造函数——一组set方法,一组get方法; 从键盘输入属性的方法; 屏幕输出属性的方法;

   SalariedEmployee ( 每月绩效 、月薪、工作年限、年终奖金) 构造函数 ——一组set方法,一组get方法; 从键盘输入属性的方法; 计算年休假天数; 计算年终奖金(根据每月绩效,月薪和工作年限); 屏幕输出属性的方法

   CommissionEmployee ( 佣金率、销售总额、年终奖金、每月销售额) 构造函数—— 一组set方法,一组get方法; 从键盘输入属性的方法; 计算年休假天数(根据年销售总额); 计算年终奖金(根据每月的月销售额和销售总额); 屏幕输出属性的方法;

   HourlyEmployee ( 每小时的工资、工作小时数) 构造函数—— 一组set方法,一组get方法 屏幕输出属性的方法

   BaseplusEmployee ( 每周的基本工资数、佣金率、销售总额、年终奖金、每月销售额) 构造函数 —— 一组set方法,一组get方法; 从键盘输入属性的方法; 计算年休假天数(根据年销售总额); 计算年终奖金(根据每月的月销售额和销售总额); 屏幕输出属性的方法。

三.代码展示

1. 结构层次

在这里插入图片描述

2. empoyee.java

代码如下(示例):

package employee;
import java.util.*;
/*
 * Employee  :    
 姓名,性别,保险号、工作年限
构造函数 
一组set方法,一组get方法
从键盘输入属性的方法
屏幕输出属性的方法
 */
public class employee {
   
	String name;// 姓名
	String sex;//性别
	double InsuranceID;//保险号
	int WorkingYear;//工作年限
	public String getName() {
   
		return name;
	}
	public void setName(String name) {
   
		this.name = name;
	}
	public String getSex() {
   
		return sex;
	}
	public void setSex(String sex) {
   
		this.sex = sex;
	}
	public double getInsuranceID() {
   
		return InsuranceID;
	}
	public void setInsuranceID(double insuranceID) {
   
		InsuranceID = insuranceID;
	}
	public int getWorkingYear() {
   
		return WorkingYear;
	}
	public void setWorkingYear(int workingYear) {
   
		WorkingYear = workingYear;
	}
	/*
	 * 从键盘输入属性的方法
	 */
	public void input(){
   
		Scanner in = new Scanner(System.in);
		System.out.println("请输入姓名:");
		setName(in.nextLine());
		System.out.println("请输入性别:");
		setSex(in.nextLine());
		System.out.println("请输入保险号:");
		setInsuranceID(in.nextDouble());
		System.out.println("请输入工作年限:");
		setWorkingYear(in.nextInt());
		in.close();
	}
	
	public employee(String name, String sex, double insuranceID, int workingYear) {
   
		super();
		this.name = name;
		this.sex = sex;
		InsuranceID = insuranceID;
		WorkingYear = workingYear;
	}
	public employee() {
   
		super();
		this.name = "丈夫";
		this.sex = "nan1";
		InsuranceID = 195184;
		WorkingYear = 15;
	}
	/*
	 * 屏幕输出属性的方法
	 */
	public void output(){
   
		System.out.println("姓名: "+getName());
		System.out.println("性别: "+getSex());
		System.out.println("保险号: "+getInsuranceID());
		System.out.println("工作年限: "+getWorkingYear());
	}
}

3.SalariedEmployee.java

代码如下(示例):

package employee;
import java.util.Scanner;
/*
 * SalariedEmployee   
每月绩效  月薪,工作年限,年终奖金
构造函数 
一组set方法,一组get方法
从键盘输入属性的方法
计算年休假天数
计算年终奖金(根据每月绩效,月薪和工作年限)
屏幕输出属性的方法
 */
public class SalariedEmployee extends employee {
   
	int performance;//每月绩效  五分制绩效 
	//5分超常, 4分达标, 3分可接受 , 2分需改进 , 1-0分不良
	double salary;//月薪
	double annualBonus;//年终奖
	public int getPerformance() {
   
		return performance;
	}
	public void setPerformance(int performance) {
   
		this.performance = performance;
	}
	public double getSalary() {
   
		return salary;
	}
	public void setSalary(double salary) {
   
		this.salary = salary;
	}
	public double getAnnualBonus() {
   
		return annualBonus;
	}
	public void setAnnualBonus(double annualBonus) {
   
		this.annualBonus = annualBonus;
	}
	/*
	 * 从键盘输入属性的方法
	 */
	public void input1()
	{
   
//		super.input();//super调用父类
		Scanner in = new Scanner(System.in);
		System.out.println("请输入姓名:");
		setName(in.nextLine());
		System.out.println("请输入性别:");
		setSex(in.nextLine());
		System.out.println("请输入保险号:");
		setInsuranceID(in.nextDouble());
		System.out.println("请输入工作年限:");
		setWorkingYear(in.nextInt());
		System.out.println("输入每月绩效(5分制):");
		setPerformance(in.nextInt());
		System.out.println("输入月薪:");
		setSalary(in.nextDouble());
		in.close();
	}
	/*
	 * 屏幕输出属性的方法
	 */
	public void output1()
	{
   
		super.output();
		System.out.println("每月绩效: "+getPerformance() );
		System.out.println("月薪:"+getSalary());
		Bonus();
		System.out.println("年终奖: "+getAnnualBonus());
		Holidays();
	}
	/*
	 * 计算年终奖金(根据每月绩效,月薪和工作年限)
	 */
	public void Bonus()
	{
   
		if(WorkingYear<5)
			setAnnualBonus( salary*WorkingYear*performance) ;
		else 
			setAnnualBonus(salary*performance*5);
	}
	/*
	 * 计算年休假天数
	 */
	public void Holidays()
	{
   
		if(WorkingYear>=1 && WorkingYear<10)
			System.out.println("年假休5天");
		else if(WorkingYear>=10 && WorkingYear<20)
			System.out.println("年假休10天");
		else 
			System.out.println("年假休20天");
	}
	public SalariedEmployee() {
   
		super();
		this.performance =5;
		this.salary = 3000;
		this.annualBonus = 0;
	}
	public SalariedEmployee(String name, String sex, double insuranceID, int workingYear, int performance,
			double salary, double annualBonus) {
   
		super(name, sex, insuranceID, workingYear
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值