Java | PTA练习:Employee类的层级结构
题目要求:
定义四个类,分别为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类的层级结构相关推荐
- java怎编写么解析一个类型_DAY3:你必须知道的java虚拟机之类篇——类文件的结构...
马上过年啦,不知道大家今年有没有投资基金股票呢?是赚的盆满钵满还是拍断大腿,可以评论区一起交流交流,秀一秀哈哈,反正我是没来得及上车. 暴富西不可能暴富的啦,打工人嘛几能写写文章啦-记得点赞➕关注呀 ...
- 【Java】一个Employee类的实际使用
public class EmployeeTest {public static void main(String[] args) { //构造一个Employee数组,并填入三个雇员对象 Emplo ...
- java员工编号程序_用JAVA编写一个employee类 为员工自动产生员工号
差不多就是这个感觉.. class Employee { /** * @param args */ private int number; private String name; private S ...
- SpringCloud源码学习笔记之Eureka客户端——DiscoveryClient接口的层级结构
1.DiscoveryClient接口和类 在SpringCloud框架中,有一个DiscoveryClient接口和一个同名的DiscoveryClient类,其中:DiscoveryClien ...
- Java必突-JVM知识专题(一): Java代码是如何跑起来的+类加载到使用的过程+类从加载到使用核心阶段(类初始化)+类加载的层级结构+什么是JVM的内存区域划分?Java虚拟机栈、Java堆内存
前言: 该章节知识点梳理:本文主要是入门和了解jvm,不做深入 1.Java代码是如何运行起来的? 2.类加载到使用的过程? 3.验证准备和初始化的过程? 4.类从加载到使用核心阶段:初始化.类加载器 ...
- 如何使用Java构造层级结构的树形数据
层级结构的数据在日常工作中是很常见的,例如:地市层级数据,机构层级数据,单位层级数据等等. 这周在工作中,我就遇到了需要处理层级结构的数据,功能需求很简单:前端有个查询页面,需要根据地市查询相应的数据 ...
- Java Web项目结构(idea)——项目命名规范——idea包层级结构设置
一.SSM项目文档结构 二.SpringBoot项目文档结构 模块 作用 src/main/java 主程序入口 Application,可以通过直接运行该类来 启动 Spring Boot应用 sr ...
- linux 进程间通信 dbus-glib【实例】详解三 数据类型和dteeth(类型签名type域)(层级结构:服务Service --> Node(对象、object) 等 )(附代码)
linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...
- 使用Java 8 Lambda表达式对Employee类进行操作
1,首先定义Employee类. package coffee.how.to.program.early.objects.chapter15;public class Employee {privat ...
- 编写一个Java程序,在程序中包含一个Employee类,Employee类包含name、age、salary三个成员变量
编写一个Java程序,在程序中包含一个Employee类,Employee类包含name.age.salary三个成员变量,Employee类中有4个构造方法,分别为无参的.带一个参数用来对name属 ...
最新文章
- 柴油发电机并机母线之间母联的设置分析
- C/C++中对链表操作的理解实例分析
- Tomcat7性能优化
- Linux(Centos7)下使用RPM方式安装MySQL5.7
- join left semi_Hive的left join、left outer join和left semi join三者的区别
- 更新macOS Big Sur系统后,Parallels Desktop打不开怎么办?教你解决方法!
- php日志接入rsyslog,php – Rsyslog重复日志(rsyslog.conf和rsyslog.d / something.conf)
- 解决 “error while loading shared libraries: libpng12.so.0: cannotopen shared object file: No such fil
- Co-occurrence网络图绘制教程(附详细代码)
- Flixel横板游戏制作教程(十)—Pickups(拾取道具)
- ccc-sklearn-11-线性回归(1)
- 快手发布二季度及中期业绩:Q2收入191亿元 同比劲增48.8%
- 学习Python的Django执行python manage.py startapp myApp创建应用出现的问题
- H5+Android混合开发电视APP
- java判断字母是否为元音_Java程序来检查字母是元音还是辅音
- 写给女朋友的java_Java会说情话的女朋友
- 盒子模型与内外边距设置
- 蒙特卡罗模拟赌徒人生
- alias:别名设置与删除,别名永久生效、常用快捷键
- 做抖音运营,一定要避开的3类数据陷阱
热门文章
- 渲染的本质: 纹理过滤(Texture filtering)技术
- UMTS移动通信技术
- a+b / a-b / a*b / a/b c++问题题解
- 射影几何----帕普斯定理的证明
- [【震撼】珠海中学曝【师生课堂互殴门】]
- access 命令不符 等级考试_全国计算机等级考试二级笔试样卷Access数据库程序设计...
- 如何培训新进的软件测试人员
- 自动设置微信朋友圈权限
- STM32 NPN与PNP检测电路
- iphone11支持es6吗_我这样用拼多多砍价群,拿到了不要钱的iPhone11