java中employee_【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出)...

这个实验展示了如何使用Java实现一个工资系统,包括一个抽象类Employee,其子类SalariedEmployee和HourEmployee。Employee类包含name、number和birthday属性,以及抽象方法earnings()和toString()。子类分别实现不同类型的工资计算。PayrollSystem类用于初始化Employee数组,根据用户输入的月份判断是否有员工过生日并调整工资。实验旨在结合对象、继承、封装、多态和抽象类的概念。

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

笔记总结:

1.Employee为抽象类,两个子类进行继承, public abstract double earning();两个子类分别实现

2.Employee[] emps[i].toString() 才可以完整地输出整个子类的信息!

3.构造函数中参数列表是对象, new HourEmployee("韩梅梅",1002,new MyDate(1998,12,21).....) ,也阔以!

4.读入流:import java.util.Scanner;

Scanner cin=new Scanner(System.in);

int month= cin.nextInt();

实验要求:

542fe25e33dcc5ece056ed10069773d70d7.jpg

80f7ba04fdf249bd553b3d04fa1192ea448.jpg

实验题目:

编写工资系统,实现不同类型员工(多态)的按月发放工资。如果当月出现某个Employee对象的生日,则将该雇员的工资增加100元。

实验目的:对象、继承、封装、多态、抽象类的组合应用。

实验说明:

(1)定义一个Employee类,该类包含:

private成员变量name,number,birthday,其中birthday 为MyDate类的对象;

abstract方法earnings();toString()方法输出对象的name,number和birthday。

(2)MyDate类包含:

private成员变量month,day,year;

toDateString()方法返回日期对应的字符串:xxxx年xx月xx日

(3)定义SalariedEmployee类继承Employee类,实现按月计算工资的员工处理。该类包括:

private成员变量monthlySalary;

实现父类的抽象方法earnings(),该方法返回monthlySalary值;toString()方法输出员工类型信息及员工的name,number,birthday。

(4)参照SalariedEmployee类定义HourlyEmployee类,实现按小时计算工资的员工处理。该类包括:

private成员变量wage和hour;

实现父类的抽象方法earnings(),该方法返回wage*hour值;toString()方法输出员工类型信息及员工的name,number,birthday。

(4)定义PayrollSystem类,创建Employee变量数组并初始化,该数组存放各类雇员对象的引用。利用循环结构遍历数组元素,输出各个对象的类型,name,number,birthday,以及该对象生日。当键盘输入本月月份值时,如果本月是某个Employee对象的生日,还要输出增加工资信息。

提示:

//定义People类型的数组

People c1[]=new People[10];

//数组元素赋值

c1[0]=new People("John","0001",20);

c1[1]=new People("Bob","0002",19);

//若People有两个子类Student和Officer,则数组元素赋值时,可以使父类类型的数组元素指向子类。

c1[0]=new Student("John","0001",20,85.0);

c1[1]=new Officer("Bob","0002",19,90.5);

View Code

工程组织:

a4185c51d6b5311fb283a66632868816.png

Employee.java:

8d0ac2987b2d3bfab9e7eb8afd98880cd5c.jpg

ce1fd33abefd7dbe6a8cbeddd78e7fd689d.jpg

package Coding;

public abstract class Employee{

private String name;

private int number;

private MyDate birthday;

@Override

public String toString() {

return "Employee{" +

"name='" + name + '\'' +

", number=" + number +

", birthday=" + birthday +

'}';

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getNumber() {

return number;

}

public void setNumber(int number) {

this.number = number;

}

public MyDate getBirthday() {

return birthday;

}

public void setBirthday(MyDate birthday) {

this.birthday = birthday;

}

public Employee(String name, int number, MyDate birthday) {

this.name = name;

this.number = number;

this.birthday = birthday;

}

public abstract double earning();

}

View Code

HourEmployee.java:

6583d8b7c5283eae623e54a545c21a9f9dc.jpg

2e37f1ecfba7d0f9a8bdb5b811cebe4916b.jpg

package Coding;

public class HourEmployee extends Employee{

private double wage;

private double hour;

public HourEmployee(String name, int number, MyDate birthday, double wage, double hour) {

super(name, number, birthday);

this.hour=hour;

this.wage=wage;

}

@Override

public String toString() {

return "HourEmployee{" +"name="+super.getName()

+"number="+super.getNumber()

+" birthday="+this.getBirthday().toString()

+ " wage=" + wage

+ ", hour=" + hour + '}';

}

@Override

public double earning() {

return wage*hour;

}

}

View Code

MyDate.java:

4a5e31ec9152c7f8e3b0f6cba7352d1249a.jpg

20c8c47a24196e17715a59e6f31e90fa5ad.jpg

package Coding;

public class MyDate {

private int year,month,day;

public MyDate(int year, int month, int day) {

this.year = year;

this.month = month;

this.day = day;

}

public int getYear() {

return year;

}

public void setYear(int year) {

this.year = year;

}

public int getMonth() {

return month;

}

public void setMonth(int month) {

this.month = month;

}

public int getDay() {

return day;

}

public void setDay(int day) {

this.day = day;

}

@Override

public String toString() {

return "MyDate{" +

"year=" + year +

", month=" + month +

", day=" + day +

'}';

}

}

View Code

SalariedEmployee.java:

1af4e8f8c2203717e05549c985286333f28.jpg

e50ed5df7179c99d2d876d93fa9e726e5db.jpg

package Coding;

//月工资

public class SalariedEmployee extends Employee{

private double monthlySalary;

public SalariedEmployee(String name, int number, MyDate birthday, double monthlySalary) {

super(name,number,birthday);

this.monthlySalary=monthlySalary;

}

@Override

public String toString() {

return "HourEmployee{" +"name="+super.getName()

+"number="+super.getNumber()

+" birthday="+this.getBirthday().toString()

+ " monthlySalary=" + monthlySalary

+ '}';

}

public double earning() {

return monthlySalary*30;

}

public double getMonthlySalary() {

return monthlySalary;

}

public void setMonthlySalary(double monthlySalary) {

this.monthlySalary = monthlySalary;

}

}

View Code

PayrollSystem.java:  (测试文件,放到Testing包里 )

606c8f693f283f13afe5dcd67a84a10bc01.jpg

6c5a8dacd2179f6c98ff9602abad00b12ee.jpg

packageTesting;import Coding.*;importjava.util.Scanner;public classPayrollSystem {public static voidmain(String[] args) {

Employee[] emps= new Employee[2];

emps[0] = new SalariedEmployee("李雷",1001,new MyDate(1998,12,21),8800);

emps[1] = new HourEmployee("韩梅梅",1002,new MyDate(1998,12,21),66,6);

Scanner cin=newScanner(System.in);

System.out.println("请输入查找的员工的月份: ");int month=cin.nextInt();for(int i=0;i

System.out.print("加工资加一百!! 说说而已.");

}

System.out.println(emps[i].toString());

}

}

}

View Code

输出结果:

3c35d506757db1e60d21fcb7b21681bf2df.jpg

8c1546cade36b5d41e72cdc5167da2f1cb8.jpg

请输入查找的员工的月份:12加工资加一百!! 说说而已.HourEmployee{name=李雷number=1001 birthday=MyDate{year=1998, month=12, day=21} monthlySalary=8800.0}

加工资加一百!! 说说而已.HourEmployee{name=韩梅梅number=1002 birthday=MyDate{year=1998, month=12, day=21} wage=66.0, hour=6.0}

View Code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值