java类的练习--下面给出一个根据雇员类型利用多态性完成

news2024/11/18 17:19:49

java类的练习–下面给出一个根据雇员类型利用多态性完成…

题目

​ 下面给出一个根据雇员类型利用多态性完成工资单计算的程序。定义一个类Employee作为超类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。对所有雇员类型都使用earnings()方法完成其工资单的计算,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从超类Employee派出生的。所以在超类中声明earnings()方法,该方法没有实质性工作,而是在每个子类都提供恰当的earnings()方法的重写。为了计算雇员的工资,程序仅使用雇员对象的一个超类引导并调用earnings()方法。

参考代码

// 参考文件名 Ch3.java


//Employee超类的定义
class Employee {
	private String name;

	public Employee(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String toString() {
		return name;
	}

	public double earnings() {
		return 0.0;
	}
}

//定义Boss类,为Employee的子类
class Boss extends Employee {
	private Double weeklySalary;

	public Boss(String name, double s) { // 定义Boss类的构造方法
		super(name);
		setWeeklySalary(s);
	}

	public void setWeeklySalary(Double weeklySalary) {
		this.weeklySalary = weeklySalary;
	}

	public double earnings() { // 重写父类的 earnings()方法
		return weeklySalary;
	}

	public String toString() {
		return "Boss: " + super.toString();
	}
}

//定义PieceWorker类,为Employee的子类
class PieceWorker extends Employee {
	private Double salary;
	private Integer piece;

	public PieceWorker(String name, Integer p, Double s) {
		super(name);
		setSalary(s);
		setPiece(p);
	}

	public void setPiece(Integer p) {
		this.piece = p;
	}

	public void setSalary(Double s) {
		this.salary = s;
	}

	public double earnings() {
		return piece * salary;
	}

	public String toString() {
		return "PieceWorker: " + super.toString();
	}
}

//定义HourlyWorker类,为Employee的子类
class HourlyWorker extends Employee {
	private Double salary;
	private Integer hour;

	public HourlyWorker(String name, Integer h, Double s) {
		super(name);
		setSalary(s);
		setHour(h);
	}

	public void setHour(Integer h) {
		this.hour = h;
	}

	public void setSalary(Double s) {
		this.salary = s;
	}

	public double earnings() {
		return this.hour * salary;
	}

	public String toString() {
		return "HourlyWorker: " + super.toString();
	}
}

public class Ch3 {
	public static void main(String args[]) {
		Employee ref; // 定义一个父类声明ref
		ref = new Boss("魏无羡", 3000); // 父类引用指向子类对象
		System.out.println(ref + ", weeklySalary:" + ref.earnings());
		ref = new PieceWorker("王也", 3, 400.0);
		System.out.println(ref + ", weeklySalary:" + ref.earnings());
		ref = new HourlyWorker("张小凡", 13, 34.0);
		System.out.println(ref + ", weeklySalary:" + ref.earnings());
	}
}

在这里插入图片描述
仅供参考,欢迎指正、交流、学习,摇一摇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/11398.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

顶级“Redis学习笔记”,缓存雪崩+击穿+穿透+集群+分布式锁,NB了

如果你是一位后端工程师,面试时八成会被问到 Redis,特别是那些大型互联网公司,不仅要求面试者能简单使用 Redis,还要深入理解其底层实现原理,具备解决常见问题的能力。可以说,熟练使用 Redis 就是后端工程师…

超140支爆款B站恰饭,2022年B站双11战报来了!

- 导语 从0到3.06亿月活,从“与世无争”到今天手持高粘性、高活跃的用户参战双十一,在B站的品牌们有了更成熟的营销模式。 2022年双十一已经落下帷幕,在B站全面拥抱双十一的火热氛围下,有哪些品牌做到了声量、销量双丰收&#x…

【毕业设计】深度学习人脸表情识别系统 - python

文章目录0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码4 最后0 前言 🔥 Hi,大家好,这里是丹成学长的毕设系列文章! &#x1f5…

基于 BERT 实现的情感分析(文本分类)----概念与应用

文章目录基于 BERT 的情感分析(文本分类)基本概念理解简便的编码方式: One-Hot 编码突破: Word2Vec编码方式新的开始: Attention 与 Transformer 模型四方来降: 超一流预处理模型 BERT 诞生BERT 实现情感分析数据预处理并创建数据集定义网络模型定义训练函数与评估函数设置损失…

AVL树的插入(C++实现)

1. 概念 AVL树(Adelson-Velsky and Landis Tree)于1962年被提出,是计算机科学中最早被发明的平衡二叉查找树。AVL树得名于它的发明者G. M. Adelson-Velsky和Evgenii Landis。 在AVL树中,任一节点对应的两棵子树的最大高度差为1&…

大一新生HTML期末作业 个人网页王嘉尔明星介绍网页设计与制作

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

领悟《信号与系统》之 信号与系统的描述-上节

信号与系统的描述-上节一、信号分类1. 一维信号和多维信号2. 确定信号和随机信号3. 连续时间信号和离散时间信号4. 周期信号和非周期信号5. 能量信号和功率信号二、常见工程信号1. 正弦信号2. 指数信号3. 取样信号4. 单位矩形脉冲信号5. 符号函数在真实的物理世界中&#xff0c…

Redis的优惠券秒杀问题(五)全局唯一ID 以及 秒杀下单

Redis的优惠券秒杀问题(五)全局唯一ID 以及 秒杀下单 关于优惠秒杀问题的Redis实现章节总览 全局唯一ID 场景分析 不能用自增的原因 id的规律性太明显 受单表数据量的限制 全局唯一ID的条件 全局唯一ID的Redis实现 代码实现 单元测试 其它…

【FPGA】FPGA实现SPI协议读写FLASH(一)----- M25P16操作概述

文章目录一、FLASH介绍(M25P16)1、M25P16概述2、SPI模式3、存储结构4、指令集5、时间参数二、M25P16工作原理三、M25P16指令操作1、页编程 (PP)2、扇区擦除和整块擦除 (SE and BE)3、写使能 (WREN)4、读ID(RDID)5、读状态寄存器&a…

使用c#将aj-report桌面化:1.winform嵌入浏览器

说到底,aj-report是个工具,我想大多数人还是想快速使用它来创建一个可以展示的工具。通过之前的章节,你应该可以制作自己的报表页面了,下面我们来看看怎么把aj-report包装成一个桌面能够运行的软件。 当然作为扩展开发,受开源协议限制,我们不能大规模修改aj-report的源代…

【毕业设计】深度学习图像修复算法研究与实现 - python

文章目录1 前言2 什么是图像内容填充修复3 原理分析3.1 第一步:将图像理解为一个概率分布的样本3.2 补全图像3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像4 在Tensorflow上构建DCGANs5 最后1 前言 &#x1…

PC_OS中断/中断屏蔽字

文章目录程序中断🎃中断概念中断功能(作用)中断请求中断源中断分类外中断非屏蔽中断和可屏蔽中断陷入(内中断)硬件中断和软件中断关系整理🎈中断判优🎈中断优先级CPU响应中断的条件外中断实现思路🎈中断隐指令 及其工作①关中断②…

下一个倒下的是不是Genesis

今日,一个关于“Genesis今晚破产”的传言在各个社交平台传播,包括行业的KOL也在讨论这个事情,认为Genesis或存在偿付能力问题,该公司将于美国东部时间11月17日8:00am与债权人通话以解释情况。若消息属实,Ge…

【AGC】flutter之agconnect_crash在ios上崩溃

问题背景 flutter agconnect_crash-1.2.0300 运行在ios平台上,出现了如下这个崩溃 NSInvalidArgumentException: *** [NSJSONSerialization dataWithJSONObject:options:error:]: value parameter is nil 0 CoreFoundation 0x00000001830d005c 0x183037000 62678…

视频讲解vue2基础之渲染v-if/v-show/v-for/v-html

大家好,我是你们的老朋友lqj_本人,最近一周没有更新文章了,是因为最近学校有一些活动比赛,也有一部分原因就是我在录制一些关于前端方面的视频,涉及到的领域主要一前端,比如:H5开发,…

项目经理如何搞懂难缠的客户【静说】

作为乙方的项目经理,是否经常遇见难缠的客户,现环境下,大部分都是甲方强势,乙方弱势,双方处于一种不对等的基础上,项目经理如何生产,成功交付项目呢? 流程机制上如何应对&#xff1…

计算机毕业设计jsp教师课堂教学评价系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 教师课堂教学评价系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql&#xff0c…

智慧公交解决方案-最新全套文件

智慧公交解决方案-最新全套文件一、建设背景二、思路架构三、建设方案3大能力:1、数据驱动的智慧公交全息感知能力2、精细化精准化的公交健康诊断能力3、高品质的公交运营组织能力6大系统:1、公交线网健康诊断系统2、职能部门指挥决策支持系统3、公共出行…

Spring读取.xml和通过Java类配置对比

Spring读取配置文件获取容器,通过容器获得javaBean演示 1.创建一个空项目 配置项目JDK 新建module 选择Maven项目 注意路径 pom.xml文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"…

C实现扫雷小游戏(简易版)

你知道&#xff0c;有些鸟儿是注定不会被关在牢笼里的&#xff0c;它们的每一片羽毛都闪耀着自由的光辉。——《肖申克的救赎》 目录 1、设计框架 2、设计流程 2.1菜单 2.2初始化雷阵 2.3生成雷 2.4玩家输入坐标 2.5显示有多少个雷 3、所有程序的源码 3.1game.h 3.2…