【Java】抽象类案例

需求:加入我们在开发一个系统时 需要对员工(Employee)类进行设计,员工包含3个属性:姓名、工号(number)以及工资(salary)。

  • 经理(Manager)也是员工,除了含有员工的属性外,另外还有一个奖金(bonus)属性。
  • headman(组长)也是员工
  • 然后定义工作的方法

请使用继承的思想设计出员工类和经理类。

 程序代码分析:(画图分析)

  • 员工——(非常抽象)
  • 员工——角色 项目经理角色、项目组长的角色、财务角色
  • 项目经理角色——管理整个项目 包括 安排项目任务
  • 项目组长的角色——带领团队开发任务 管理小团队

 案例代码:

EmployeeParent.java

package com.面向对象.Demo26;/*** 员工类*/
public abstract class EmployeeParent {public EmployeeParent() {}public EmployeeParent(String name, int number, Double salary) {this.name = name;this.number = number;this.salary = salary;}private String name; //姓名private int number; //工号private Double salary; // 工资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 Double getSalary() {return salary;}public void setSalary(Double salary) {this.salary = salary;}/*** 不同的员工 对应的工作任务 是不一样的 work() 抽象方法* 需要交给 不同的子类来重写的*/public abstract void work();
}

Manager.java

package com.面向对象.Demo26;/*** 项目经理类*/
public class Manager extends EmployeeParent {private Double bonus; // 奖金/*** 在默认的情况下 是有一个无参构造方法的 默认 super(); 父类中无参构造方法的*/public Manager(String name, int number, Double salary, Double bonus) {super(name, number, salary);this.bonus = bonus;}@Overridepublic void work() {System.out.println("项目经理Manager-管理整个项目");}public Double getBonus() {return bonus;}
}

Headman.java

package com.面向对象.Demo26;/*** 项目组长类*/
public class Headman extends EmployeeParent {public Headman(String name, int number, Double salary) {super(name, number, salary);}@Overridepublic void work() {System.out.println("项目组长Headman-负责带领小的团队编码工作");}
}

Test01.java

package com.面向对象.Demo26;public class Test01 {public static void main(String[] args) {EmployeeParent parent = new Manager("张三", 1, 20000.00, 2000.00);parent.work();System.out.println("员工姓名:" + parent.getName());System.out.println("员工工号:" + parent.getNumber());System.out.println("员工薪资:" + parent.getSalary());
//        System.out.println("员工奖金:"+parent.bonus); //这样是访问不到的/*** 编译看左边 执行看右边* 多态转型(向下转型)* 父转子*/Manager manager = (Manager) parent;System.out.println("项目经理奖金:" + manager.getBonus());System.out.println("=============================");Headman headman = new Headman("李四", 2, 10000.00);headman.work();System.out.println("员工姓名:" + headman.getName());System.out.println("员工工号:" + headman.getNumber());System.out.println("员工薪资:" + headman.getSalary());}
}

运行结果:


下一篇文章:

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【物联网】STM32的中断机制不清楚?看这篇文章就足够了

在嵌入式系统中,中断是一种重要的机制,用于处理来自外部设备的异步事件。STM32系列微控制器提供了强大的中断控制器,可以方便地处理各种外部中断和内部中断。本文将详细介绍STM32中断的结构和使用方法。 文章目录 1. 什么叫中断2. 中断优先级…

怒刷LeetCode的第23天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:贪心算法 方法二:动态规划 方法三:回溯算法 方法四:并查集 第二题 题目来源 题目内容 解决方法 方法一:排序和遍历 方法二:扫描线算法 方法…

给列起别名(关键字:as)

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 语法格式: select 列名1 as 别名1, 列名2 as 别名2, 列名n as 别名n from 表名; 说明:可以省略as,列名和别名之间使用空格…

多目标跟踪框架boxmot介绍

引言 boxmot由mikel brostrom开发,用于目标检测,分割和姿态估计模型的SOTA(state of art)跟踪模块,现已加入python第三方库 PYPI,可用pip包管理器进行安装。 boxmot所支持的跟踪器采用外观特征识别方法&am…

【动手学深度学习-Pytorch版】Transformer代码总结

本文是纯纯的撸代码讲解,没有任何Transformer的基础内容~ 是从0榨干Transformer代码系列,借用的是李沐老师上课时讲解的代码。 本文是根据每个模块的实现过程来进行讲解的。如果您想获取关于Transformer具体的实现细节(不含代码)可…

国庆中秋特辑(七)Java软件工程师常见20道编程面试题

以下是中高级Java软件工程师常见编程面试题,共有20道。 如何判断一个数组是否为有序数组? 答案:可以通过一次遍历,比较相邻元素的大小。如果发现相邻元素的大小顺序不对,则数组不是有序数组。 public boolean isSort…

【Unity】两种方式实现弹跳平台/反弹玩家(玩家触发与物体自身触发事件实现蹦床的物理效果)

一、声明 只实现物理反弹的效果,不实现蹦床会有的视觉拉伸效果,请自行找相关代码 二、实现 经过我的实践,我发现要想实现一个平台反弹的效果,要么就选择给player添加一个物理材质(平台加了没用)&#xff0…

arduino嵌入式1,LED闪烁案例

CVE系列在等等吧,环境我有点懒得搭建了 文章目录 前言一、anduino是什么玩意儿?二、使用步骤1.找蓝图/画蓝图2.写入数据成果 总结 前言 最近在学习嵌入式开发,我的单片机到了,然后我就沉迷于嵌入式开发的环境中 提示:…

Linux嵌入式学习之Ubuntu入门(六)shell脚本详解

系列文章内容 Linux嵌入式学习之Ubuntu入门(一)基本命令、软件安装、文件结构、编辑器介绍 Linux嵌入式学习之Ubuntu入门(二)磁盘文件介绍及分区、格式化等 Linux嵌入式学习之Ubuntu入门(三)用户、用户组…

go-fastdfs分布式文件存储集群搭建和测试

一、官方文件 https://sjqzhang.github.io/go-fastdfs/#character2、集群原理 小集群原理: 大集群原理 二、服务端集群部署 1、在集群每个节点机器上下载安装包 (建议使用最新稳定版本) wget --no-check-certificate https://github.com/sjqzhang/go…

【Linux基础】Linux发展史

👉系列专栏:【Linux基础】 🙈个人主页:sunny-ll 一、前言 本篇主要介绍Linux的发展历史,这里并不需要我们掌握,但是作为一个合格的Linux学习者与操作者,这些东西是需要了解的,而且…

docker基本命令

一、镜像操作 1、搜索镜像 docker search 仓库名/镜像名 2、下载镜像 docker pull 仓库名/镜像名:标签 若不指明标签,则表示下载最新版本的【标签为latest】 3、查看镜像 docker images 4、创建镜像 docker tag 原仓库/镜像名:原标名 新…

机器人制作开源方案 | 家庭清扫拾物机器人

作者:罗诚、李旭洋、胡旭、符粒楷 单位:南昌交通学院 人工智能学院 指导老师:揭吁菡 在家庭中我们有时无法到一些低矮阴暗的地方进行探索,比如茶几下或者床底下,特别是在部分家庭中,如果没有及时对这些阴…

【网络安全】2023年堡垒机品牌大全

随着大家网络安全意识的增加,随着国家等保政策的严格执行,越来越多的企业开始采购堡垒机。这里就给大家总结了部分堡垒机品牌,让大家参考参考。 2023年堡垒机品牌大全 1、行云堡垒 2、JumpServer 3、安恒 4、骞云 5、齐治 6、阿里云 …

【应用层协议】HTTPS的加密流程

文章目录 1. 认识HTTPS2. 密文3. HTTPS加密流程3.1 对称加密3.2 非对称加密3.3 证书 1. 认识HTTPS HTTPS(超文本传输协议安全)也是一个应用层协议,它是在HTTP协议的基础上引入了一个加密层。 也就是HTTP协议传输文本的方式是明文,…

【Docker Compose】Docker Compose 的安装,使用以及实现微服务集群的部署

文章目录 前言:Docker 部署存在的问题一、 初识 Docker Compose1.1 什么是 Docker Compose1.2 在 CentOS 上安装 Docker Compose 二、深入了解 Docker Compose 文件2.1 Docker Compose 文件概述2.2 Docker Compose 文件详解2.3 示例:编写 Docker Compose…

Flutter AI五子棋

前言 在上一篇文章中,讲解了如何实现双人在本地对战的五子棋,但是只有一个人的时候就不太好玩,同时博主也没有把五子棋相关的文章写过瘾。那么这篇文章,我们来实现一个功能更加丰富的五子棋吧!在设计五子棋的算法方面&…

mysql5.7停止维护时间

mysql5.7将于2023年10月停止官网支持和更新;老项目要准备升级,新项目的mysql必须是mysql8.0(2023-10) 官方升级咨询地址 oracle官方升级咨询地址https://go.oracle.com/LP116153?elq_mid247718&sh1518132002061316121320310…

vue、vuex状态管理

使用步骤: 1、安装vuex 口诀:“233”、“344” 数字分别对应,“vue版本,vue 路由版本、vuex 版本”。 所以这里了使用vuex3版本: yarn add vuex3 2、创建仓库文件 编写如下: // 这个文件用于存放vuex的…

JAVA面经整理(7)

一)什么是AQS? 1)AQS也被称之为是抽象同步队列,它是JUC包底下的多个组件的底层实现,Lock,CountDownLatch和Semphore底层都使用到了AQS AQS的核心思想就是给予一个等待队列和同步状态来实现的,它的内部使用一个先进先出…