Java基础语法68-抽象类练习

编写工资系统,实现不同类型员工(多态)的按月发放工资。如果当月出现某个

Employee对象的生日,则将该雇员的工资增加100元。

实验说明:

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

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

abstract方法earnings();

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

(2) MyDate类包含:

private成员变量year,month,day ;

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。

(5) 定义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);

package com.java10;
/** 定义一个Employee类,该类包含:
private成员变量name,number,birthday,其中birthday 为MyDate类的对象;
abstract方法earnings();
toString()方法输出对象的name,number和birthday。**/
public abstract class Employee {private String name;private int number;private MyDate birthday;public Employee(String name, int number, MyDate birthday) {this.name = name;this.number = number;this.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 abstract double earnings();@Overridepublic String toString() {return "Employee{" +"name='" + name + '\'' +", number=" + number +", birthday=" + birthday.toDateString() +'}';}}
package com.java10;
/*
* 参照SalariedEmployee类定义HourlyEmployee类,实现按小时计算工资的员工处理。该类包括:
*
* private成员变量wage和hour;
*
* 实现父类的抽象方法earnings(),该方法返回wage*hour值;
*
* toString()方法输出员工类型信息及员工的name,number,birthday。
* */
public class HourlyEmployee extends Employee{private int wage;//每小时的工资private int hour;//月工作小时数public HourlyEmployee(String name, int number, MyDate birthday) {super(name, number, birthday);}public HourlyEmployee(String name, int number, MyDate birthday,int wage,int hour) {super(name, number, birthday);this.wage =wage;this.hour = hour;}public int getWage() {return wage;}public void setWage(int wage) {this.wage = wage;}public int getHour() {return hour;}public void setHour(int hour) {this.hour = hour;}@Overridepublic double earnings() {return hour * wage;}}
package com.java10;
/*** MyDate类包含:** private成员变量year,month,day ;** toDateString()方法返回日期对应的字符串:xxxx年xx月xx日*/
public class MyDate {private int year;private int month;private int 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;}public MyDate(int year, int month, int day) {this.year = year;this.month = month;this.day = day;}public String toDateString(){return year + "年" + month + "月" + day + "日";}}
package com.java10;import java.util.Calendar;
import java.util.Scanner;/*
*  定义PayrollSystem类,创建Employee变量数组并初始化,该数组存放各类雇员对象的引用。利用循环结构遍历数组元素,输出各个对象的类
* 型,name,number,birthday,以及该对象生日。当键盘输入本月月份值时,如果本
* 月是某个Employee对象的生日,还要输出增加工资信息。
* */
public class PayrollSystem {public static void main(String[] args) {//        Scanner scanner = new Scanner(System.in);
//        System.out.println("请输入当前月份:");
//        int month = scanner.nextInt();Calendar calendar  = Calendar.getInstance();int month = calendar.get(Calendar.MONTH);System.out.println(month+1);//一月份:0Employee[] emp = new Employee[2];emp[0] = new SalariedEmployee("马森", 1002, new MyDate(1999, 2, 28),10000);emp[1] = new HourlyEmployee("潘雨生", 2001, new MyDate(1999,5,6),60,240);for (int i = 0; i < emp.length; i++) {System.out.println(emp[i]);System.out.println("月工资为:"+emp[i].earnings());if(month == emp[i].getBirthday().getMonth()){System.out.println("生日快乐!奖励100元");}}}
}
package com.java10;/** 定义SalariedEmployee类继承Employee类,实现按月计算工资的员工处理。该类包括:private成员变量monthlySalary;* 实现父类的抽象方法earnings(),该方法返回monthlySalary值;toString()方法输出员工类型信息及员工的name,number,birthday** */
public class SalariedEmployee extends Employee {private int monthlySalary;public int getMonthlySalary() {return monthlySalary;}public void setMonthlySalary(int monthlySalary) {this.monthlySalary = monthlySalary;}public SalariedEmployee(String name, int number, MyDate birthday) {super(name, number, birthday);}public SalariedEmployee(String name, int number, MyDate birthday,int monthlySalary) {super(name, number, birthday);this.monthlySalary = monthlySalary;}@Overridepublic double earnings() {return monthlySalary;}@Overridepublic String toString() {return "SalariedEmployee{" +super.toString() +'}';}
}

Java基础语法68-抽象类练习相关推荐

  1. Java 基础语法(自用)

    Java 基础语法 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如 ...

  2. (31)Java基础语法 --接口

    目录 1.接口的概述 2.接口的定义格式 3.在接口中定义抽象方法 4.定义接口的 实现类 5.接口的使用 接口练习 6.接口的特点 7.一个实现类可以同时实现多个接口 8.接口的继承 9.设计提示 ...

  3. 【JAVA学习】1、零基础入门Java 基础语法:概念、规则、格式

    [JAVA学习]1.零基础入门Java 基础语法 前言 JAVA开发环境选择 Java 基础概念 Java 标识符 Java修饰符 基础代码模板框架 命名规则 基础规则 后端开发规则 代码格式 前言 ...

  4. Java基础语法总复习

    前言: 对于Java基础语法部分目前就告一段落啦,系列文章目录是之前写过的部分笔记,当然,这些目录中只涉及了我初学时认为应当总结概括的或者知识点较多的章节,对于此篇文章中未细细考究的内容大家可以由系列 ...

  5. java基础语法入门到类型转换问题,运算符,数据输入,数组,方法概述,Debug模式,以及10个小案例的详细介绍。

    java基础语法 目录 java基础语法 1. Java概述 1.1 Java语言发展史(了解) 1.2 Java语言跨平台原理(理解) 1.3 JRE和JDK(记忆) 1.4 JDK的下载和安装(应 ...

  6. JAVA基础语法——面向对象思想

    Java基础语法 前言 一.面向对象思想 1.面向对象(OOP)概述 2.面向对象三大特性五大原则 二.类和对象 1.对象和类的概念 2.对象的特征 3.构造方法 3.This关键字 4.static ...

  7. 自制小型图书管理系统 - 简单版(锻炼java基础语法的使用)

    文章目录 前言 1. 小型图书管理系统框架思想 2. 实现框架 2.1 构建书架:存放书籍 2.2 使用者的构建 - user 2.3 主函数构建 - Main 2.4 操作的构建 - operate ...

  8. Java基础语法(数组)

    第4天 Java基础语法 今日内容介绍 u 流程控制语句(switch) u 数组 第1章 流程控制语句 1.1 选择结构switch switch 条件语句也是一种很常用的选择语句,它和if条件语句 ...

  9. 使用java实现面向对象编程第二章_java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1.java关键字 abstract boolean break byte case catch char class const continue default do d ...

  10. Java基础语法(一)

    Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式 ...

最新文章

  1. Android短视频开发都需要什么技术?
  2. linux avahi-daemon进程 网络服务 简介
  3. C# 中泛型与非泛型?(摘)
  4. OpenCV使用inRange的阈值操作Thresholding Operations
  5. 将传统 WPF 程序迁移到 DotNetCore 3.0
  6. 【渝粤题库】广东开放大学 PHP动态网站设计 形成性考核
  7. c/c++笔试面试题(4)
  8. linux 下批量压缩文件
  9. 写入缓存 还是 直接 写入 json 方便,
  10. 十面阿里Java程序员终拿下阿里P6offer
  11. MySQL解析json字符串的相关问题
  12. 团队项目(MVP-----------新能源汽车无线充电管理系统)个人任务(5)
  13. Fixjs——显示交互基类InteractiveObject
  14. 从官网获取redhat
  15. o2o模式的优势 o2o模式的劣势
  16. 【MySQL 8】MySQL 5.7都即将停只维护了,是时候学习一波MySQL 8了
  17. 福特汉姆大学计算机科学专业,Fordham的Computer and Information Science「福特汉姆大学计算机与信息科学系」...
  18. 2016最新前端学习计划
  19. 更改设置让Cheat Engine搜索安卓模拟器里的数据
  20. cad画圆如何确定圆心_cad画圆如何确定圆心_CAD如何利用对象捕捉追踪功能来确定小圆圆心以及矩形的角点位置......

热门文章

  1. 尚硅谷TypeScript教程(李立超老师)学习笔记
  2. ecshop 商品详情页商品放大镜功能
  3. 2022年Landsat8/9 Collection2数据 ENVI5.3打开(暴力打开,亲测有效)
  4. LIVE1和LIVE2图像数据集 图像视频编码效应去除
  5. TweenMax+SVG礼物盒购物动画
  6. spotlight on oracle 配置,spotlight on oracle的使用方法
  7. Android系统签名生成Studio导入系统keystore
  8. 《京韵大鼓——黎明的战歌》(骆玉笙)(唱词文本)
  9. 成都哪家机构的Java培训比较好,求一个不坑的?
  10. N级台阶走法(算法问题)