题目要求:

定义四个类,分别为Employee类、SalariedEmployee类、HourlyEmployee类和CommissionEmployee类。其中Employee类是其他三个类的父类。Employee类包含姓名和身份证号。除此之外,SalariedEmployee类还应包含每月工资;HourlyEmployee类还应包含每小时工资数和工作时间数;CommissionEmployee还应包含提成比例和销售总额。其中HourlyEmployee的工资为:每小时工资数×工作时间数,CommissionEmployee的工资为:提成比例×销售总额。每个类都应有合适的构造方法、数据成员的设置和读取方法。编写一个测试程序,创建这些类的对象,并输出与对象相关的信息。注意子类有时需调用父类的构造方法和被覆盖的方法,成员变量定义为private,对有些方法实现重载。测试程序如下所示:

    public static void main(String [] args){Scanner in=new Scanner(System.in);Employee [] e=new Employee[3];e[0]=new SalariedEmployee(in.next(),in.next(),in.nextDouble());e[1]=new HourlyEmployee(in.next(),in.next(),in.nextDouble(),in.nextDouble());e[2]=new CommissionEmployee(in.next(),in.next(),in.nextDouble(),in.nextDouble());for(int i=0;i<e.length;i++){    System.out.println(e[i].getSalary());System.out.println(e[i]);}
}

输入格式:

输入三行。第一行为一个SalariedEmployee对象的姓名,身份证号和每月工资。第二行为一个HourlyEmployee对象的姓名、身份证号、每小时工资数、工作时间。第三行为一个CommissionEmployee对象的姓名、身份证号、提成比例和销售总额。

输出格式:

输出三个对象的工资和对象的其他信息。每一个对象输出两行,第一行为工资,第二行为对象的信息。

输入样例:

Mike 0001 5000
Jack 0002 20 300
Tom 0003 0.2 50000

输出样例:

5000.0
SalariedEmployee[name=Mike,id=0001][monthSalary=5000.0]
6000.0
HourlyEmployee[name=Jack,id=0002][hourSalary=20.0,workhour=300.0]
10000.0
CommissionEmployee[name=Tom,id=0003][commissionRatio=0.2,sale=50000.0]

代码示例:

import java.util.*;class Employee{protected String name;protected String id;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}public Employee() {}public Employee(String name, String id) {this.name = name;this.id = id;}public double getSalary() {return 0;}@Overridepublic String toString() {return "Employee [name=" + name + ",id=" + id + "]";}}class SalariedEmployee extends Employee{private double monthSalary;public double getmonthSalary() {return monthSalary;}public void setmonthSalary(double monthSalary) {this.monthSalary = monthSalary;}public double getSalary() {return this.monthSalary;}public SalariedEmployee(String name, String id ,double monthSalary) {super(name, id);this.monthSalary = monthSalary;}@Overridepublic String toString() {return "SalariedEmployee[name=" + name + ",id=" + id + "]"+"[monthSalary=" + monthSalary + "]";}}class HourlyEmployee extends Employee{private double hourSalary;private double workhour;public double gethourSalary() {return hourSalary;}public void sethourSalary(double hourSalary) {this.hourSalary = hourSalary;}public double getworkhour() {return workhour;}public void setworkhour(double workhour) {this.workhour = workhour;}public double getSalary() {return this.hourSalary*workhour;}public HourlyEmployee(String name, String id ,double hourSalary, double workhour) {super(name, id);this.hourSalary = hourSalary;this.workhour = workhour;}@Overridepublic String toString() {return "HourlyEmployee[name=" + name + ",id=" + id + "]"+"[hourSalary=" + hourSalary + ",workhour=" + workhour + "]";}
}class CommissionEmployee extends Employee{private double commissionRatio;private double sale;public double getcommissionRatio() {return commissionRatio;}public void setcommissionRatio(double commissionRatio) {this.commissionRatio = commissionRatio;}public double getsale() {return sale;}public void setsale(double sale) {this.sale = sale;}public double getSalary() {return this.commissionRatio*this.sale;}public CommissionEmployee(String name, String id,double commissionRatio, double sale) {super(name,id);this.commissionRatio = commissionRatio;this.sale = sale;}@Overridepublic String toString() {return "CommissionEmployee[name=" + name + ",id=" + id + "]"+"[commissionRatio=" + commissionRatio + ",sale=" + sale + "]";}
}public class Main{public static void main(String [] args){Scanner in=new Scanner(System.in);Employee [] e=new Employee[3];e[0]=new SalariedEmployee(in.next(),in.next(),in.nextDouble());e[1]=new HourlyEmployee(in.next(),in.next(),in.nextDouble(),in.nextDouble());e[2]=new CommissionEmployee(in.next(),in.next(),in.nextDouble(),in.nextDouble());for(int i=0;i<e.length;i++){    System.out.println(e[i].getSalary());System.out.println(e[i]);}}
}

注意要点:

应该只有一点吧,继承过程中的重写,意识要练起来。用父类的引用调用方法执行的是子类的Override代码。

        Employee [] e=new Employee[3];e[0]=new SalariedEmployee(in.next(),in.next(),in.nextDouble());e[1]=new HourlyEmployee(in.next(),in.next(),in.nextDouble(),in.nextDouble());e[2]=new CommissionEmployee(in.next(),in.next(),in.nextDouble(),in.nextDouble());for(int i=0;i<e.length;i++){    System.out.println(e[i].getSalary());System.out.println(e[i]);}

Java | PTA练习:Employee类的层级结构相关推荐

  1. java怎编写么解析一个类型_DAY3:你必须知道的java虚拟机之类篇——类文件的结构...

    马上过年啦,不知道大家今年有没有投资基金股票呢?是赚的盆满钵满还是拍断大腿,可以评论区一起交流交流,秀一秀哈哈,反正我是没来得及上车. 暴富西不可能暴富的啦,打工人嘛几能写写文章啦-记得点赞➕关注呀 ...

  2. 【Java】一个Employee类的实际使用

    public class EmployeeTest {public static void main(String[] args) { //构造一个Employee数组,并填入三个雇员对象 Emplo ...

  3. java员工编号程序_用JAVA编写一个employee类 为员工自动产生员工号

    差不多就是这个感觉.. class Employee { /** * @param args */ private int number; private String name; private S ...

  4. SpringCloud源码学习笔记之Eureka客户端——DiscoveryClient接口的层级结构

    1.DiscoveryClient接口和类   在SpringCloud框架中,有一个DiscoveryClient接口和一个同名的DiscoveryClient类,其中:DiscoveryClien ...

  5. Java必突-JVM知识专题(一): Java代码是如何跑起来的+类加载到使用的过程+类从加载到使用核心阶段(类初始化)+类加载的层级结构+什么是JVM的内存区域划分?Java虚拟机栈、Java堆内存

    前言: 该章节知识点梳理:本文主要是入门和了解jvm,不做深入 1.Java代码是如何运行起来的? 2.类加载到使用的过程? 3.验证准备和初始化的过程? 4.类从加载到使用核心阶段:初始化.类加载器 ...

  6. 如何使用Java构造层级结构的树形数据

    层级结构的数据在日常工作中是很常见的,例如:地市层级数据,机构层级数据,单位层级数据等等. 这周在工作中,我就遇到了需要处理层级结构的数据,功能需求很简单:前端有个查询页面,需要根据地市查询相应的数据 ...

  7. Java Web项目结构(idea)——项目命名规范——idea包层级结构设置

    一.SSM项目文档结构 二.SpringBoot项目文档结构 模块 作用 src/main/java 主程序入口 Application,可以通过直接运行该类来 启动 Spring Boot应用 sr ...

  8. linux 进程间通信 dbus-glib【实例】详解三 数据类型和dteeth(类型签名type域)(层级结构:服务Service --> Node(对象、object) 等 )(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  9. 使用Java 8 Lambda表达式对Employee类进行操作

    1,首先定义Employee类. package coffee.how.to.program.early.objects.chapter15;public class Employee {privat ...

  10. 编写一个Java程序,在程序中包含一个Employee类,Employee类包含name、age、salary三个成员变量

    编写一个Java程序,在程序中包含一个Employee类,Employee类包含name.age.salary三个成员变量,Employee类中有4个构造方法,分别为无参的.带一个参数用来对name属 ...

最新文章

  1. 柴油发电机并机母线之间母联的设置分析
  2. C/C++中对链表操作的理解实例分析
  3. Tomcat7性能优化
  4. Linux(Centos7)下使用RPM方式安装MySQL5.7
  5. join left semi_Hive的left join、left outer join和left semi join三者的区别
  6. 更新macOS Big Sur系统后,Parallels Desktop打不开怎么办?教你解决方法!
  7. php日志接入rsyslog,php – Rsyslog重复日志(rsyslog.conf和rsyslog.d / something.conf)
  8. 解决 “error while loading shared libraries: libpng12.so.0: cannotopen shared object file: No such fil
  9. Co-occurrence网络图绘制教程(附详细代码)
  10. Flixel横板游戏制作教程(十)—Pickups(拾取道具)
  11. ccc-sklearn-11-线性回归(1)
  12. 快手发布二季度及中期业绩:Q2收入191亿元 同比劲增48.8%
  13. 学习Python的Django执行python manage.py startapp myApp创建应用出现的问题
  14. H5+Android混合开发电视APP
  15. java判断字母是否为元音_Java程序来检查字母是元音还是辅音
  16. 写给女朋友的java_Java会说情话的女朋友
  17. 盒子模型与内外边距设置
  18. 蒙特卡罗模拟赌徒人生
  19. alias:别名设置与删除,别名永久生效、常用快捷键
  20. 做抖音运营,一定要避开的3类数据陷阱

热门文章

  1. 渲染的本质: 纹理过滤(Texture filtering)技术
  2. UMTS移动通信技术
  3. a+b / a-b / a*b / a/b c++问题题解
  4. 射影几何----帕普斯定理的证明
  5. [【震撼】珠海中学曝【师生课堂互殴门】]
  6. access 命令不符 等级考试_全国计算机等级考试二级笔试样卷Access数据库程序设计...
  7. 如何培训新进的软件测试人员
  8. 自动设置微信朋友圈权限
  9. STM32 NPN与PNP检测电路
  10. iphone11支持es6吗_我这样用拼多多砍价群,拿到了不要钱的iPhone11