【Java】抽象类案例

news2024/9/20 19:40:50

需求:加入我们在开发一个系统时 需要对员工(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;
    }

    @Override
    public 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);
    }

    @Override
    public 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.coloradmin.cn/o/1061452.html

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

相关文章

mysql面试题16:说说分库与分表的设计?常用的分库分表中间件有哪些?分库分表可能遇到的问题有哪些?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说说分库与分表的设计? 在MySQL中,分库与分表是常用的数据库水平扩展技术,可以提高数据库的吞吐量和扩展性。下面将具体讲解MySQL中分库与分表…

机器视觉工程师努力工作确实不一定涨工资,但是努力工作,确实有很大可能涨工资

机器视觉工程师努力工作确实不一定涨工资,但是努力工作,确实有很大可能涨工资 其实在我们机器视觉工程张薪资方面,正常是一年两次调整周期。

基于Java的网上邮轮预定系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

中秋时节赏明月,五子棋戏月饼趣 — Flutter中秋限定版五子棋

前言 当中秋时节来临,我们都期待着与亲人朋友共度这个美好的节日。这个时候,除了传统的赏月和品尝美味的月饼,我还有一个特别的建议——尝试一款有趣的Flutter五子棋游戏!这款五子棋游戏以中秋为主题,游戏的棋子也可爱…

【计算机网络】HTTPS协议详解

文章目录 一、HTTPS协议 介绍 1、1 HTTP协议不安全的体现 1、2 什么是 HTTPS协议 二、加密的一些概念 2、1 怎么理解加密 2、2 为什么要加密 2、3 常见的加密方式 2、2、1 对称加密 2、2、2 非对称加密 三、HTTPS协议探究加密过程 3、1 只使用对称加密 3、2 只是用非对称加密 3…

Discuz!X 3.4任意文件删除漏洞

复现过程: 1.访问http://x.x.x/robots.txt(文件存在) 2.登录弱口令 账号:admin密码:admin 3.来到个人设置页面找到自己的formhash: 4.点击保存,抓包 来到这个参数:birthprovin…

C#开发的OpenRA游戏之电力系统之一

C#开发的OpenRA游戏之电力系统之一 前面已经分析过雷达地图显示,在雷达地图的下面有一个显示电力数量显示,如下图: 从上图看到电力的数量为0,所以这时候就处于低电力的模式。 要在这里显示电力,那么就需要在界面上做一点编辑,是在yaml文件定义它: Container@POWERBAR…

基于springboot的大创管理系统

目录 前言 一、技术栈 二、系统功能介绍 项目中检管理 专家评审管理 项目申报管理 项目结项管理 学生注册管理 优秀项目信息 项目信息申报 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理…

Qt 设置软件的版本信息:QMake、CMake工程

本文借鉴了Qt 设置软件的版本信息 - 疯狂delphi - 博客园 (cnblogs.com) 在原文基础增加了CMake工程实现的方法。 Qt设置软件的版本等信息 对于Qt开发的软件,我们如何去方便的查看其软件的版本信息。这里提供了几种方式。 在运行程序期间设置版本信息 大部分的程序…

【NeurIPS 2023】Backdoor对抗攻防论文汇总

NeurIPS 对抗攻防论文 NeurIPS2022|对抗攻防论文整理 - 知乎 NeurIPS 2023 Papers BIRD: Generalizable Backdoor Detection and Removal for Deep Reinforcement Learning https://neurips.cc/virtual/2023/poster/70618 摘要: 后门攻击对深度强化学习&…

Nginx在CentOS上的安装部署、RabbitMQ在CentOS上安装部署

目录 1. Nginx在CentOS上的安装部署 1.1 Nginx简介 1.2 Nginx安装 1.2.1 安装yum依赖程序 1.2.2 手动添加,nginx的yum仓库 1.2.3 通过yum安装最新稳定版的nginx 1.2.4 启动 1.2.5 配置防火墙放行 1.2.6 启动后浏览器输入Linux服务器的IP地址或主机…

微信支付费率降低到0.2%,商家收款开户手续费0.6%降低的操作方法

在如今的数字时代,移动支付已成为人们日常生活中必不可少的一部分。微信支付作为国内最受欢迎的移动支付平台,一直致力于为商家和个人提供最便捷、安全的支付方式。如果可以将微信支付将费率降低到仅为0.2%,这无疑给广大商家带来了巨大的利好…

基于SpringBoot的网上超市系统

基于SpringBoot的网上超市系统的设计与实现 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色:用户、管理员 管理员:个人中心、用户管理、商品分类…

基于Java的校园跑腿接单管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

武汉建筑模板厂家哪家质量好?

武汉作为中国的重要城市,建筑业的发展日益蓬勃。在众多建筑材料供应商中,选择一家质量好的建筑模板厂家对于工程质量和施工效率至关重要。那么,武汉有哪些建筑模板厂家质量好呢?让我们来探讨一下。 首先,武汉建筑模板厂…

【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…

20231005使用ffmpeg旋转MP4视频

20231005使用ffmpeg旋转MP4视频 2023/10/5 12:21 百度搜搜:ffmpeg 旋转90度 https://zhuanlan.zhihu.com/p/637790915 【FFmpeg实战】FFMPEG常用命令行 https://blog.csdn.net/weixin_37515325/article/details/127817057 FFMPEG常用命令行 5.视频旋转 顺时针旋转…

国庆发生的那些事儿------编写了炫酷的HTML动态鼠标特效,超级炫酷酷酷!

文章目录 前言具体操作总结 前言 国庆假期的欢乐,当然少不了编码爱好者!假期编写了炫酷的HTML动态鼠标特效,超级炫酷酷酷!让你的页面变得更加炫酷,让你的小伙伴们羡慕的大神编码!快来看看大神是如何编写的…

IDEA为什么不能搜索到jar里的代码?

参考:https://www.zhihu.com/question/487626575 搜索 jar 源码需要这样: 1、首先需要下载对应的源代码,在 pom.xml 上右键,选择 maven, download sources 2、其次 Ctrl Shift F 或者ctrl shift r,输…

大模型部署手记(1)ChatGLM2+Windows GPU

1.简介: 组织机构:智谱/清华 代码仓:https://github.com/THUDM/ChatGLM2-6B 模型:THUDM/chatglm2-6b 下载:https://huggingface.co/THUDM/chatglm2-6b 镜像下载:https://aliendao.cn/models/THUDM/chat…