【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5264字,纯文字阅读大概需要8分钟。
内容图文
![【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出)](/upload/InfoBanner/zyjiaocheng/852/0db9eb1db29543ab9d0f7162c49ee1cb.jpg)
笔记总结:
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();
实验要求:
![【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506043636865.jpg)
![【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506043636936.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
工程组织:
Employee.java:
![【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506043636865.jpg)
![【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506043636936.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:
![【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506043636865.jpg)
![【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506043636936.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:
![【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506043636865.jpg)
![【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506043636936.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:
![【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506043636865.jpg)
![【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506043636936.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包里 )
![【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506043636865.jpg)
![【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506043636936.jpg)
package Testing; import Coding.*; import java.util.Scanner; public class PayrollSystem { public static void main(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=new Scanner(System.in); System.out.println("请输入查找的员工的月份: "); int month= cin.nextInt(); for(int i=0;i<emps.length;i++){ if(emps[i].getBirthday().getMonth()==month){ System.out.print("加工资加一百!! 说说而已."); } System.out.println(emps[i].toString()); } } }View Code
输出结果:
![【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506043636865.jpg)
![【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506043636936.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
内容总结
以上是互联网集市为您收集整理的【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出)全部内容,希望文章能够帮你解决【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。