重学java 22.面向对象 继承、抽象综合案例

news2024/9/19 10:57:55

我们纵横交错,最后回到原点

                                —— 24.4.23

综合案例

流程思维图

代码实现

方式1 利用set方法为属性赋值

父类:

public abstract class Development extends Employee{

}

子类1:

public class JavaEE extends Development{

    @Override
    public void work() {
        System.out.println("员工号为"+this.getId()+"的"+this.getName()+"正在开发网站");
    }
}

子类2:

public class Android extends Development{
    @Override
    public void work() {
        System.out.println("员工号为"+this.getId()+"的"+this.getName()+"正在开发APP");
    }
}

 子类的子类:

public abstract class Employee {
    private int id;
    private String name;

    public Employee() {
    }

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

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public abstract void work();
}

测试类:

public class Demo117Test {
    public static void main(String[] args) {
        JavaEE javaEE = new JavaEE();
        javaEE.setId(1);
        javaEE.setName("大壮");
        javaEE.work();
        System.out.println("————————————————————");
        Android android = new Android();
        android.setId(2);
        android.setName("图图");
        android.work();
    }
}

运行结果:

方式2 利用构造赋值

父类:

public abstract class Development extends Employee{
    public Development() {
    }

    public Development(int id, String name) {
        super(id, name);
    }
}

子类1:

public class JavaEE extends Development{
    public JavaEE() {
    }

    public JavaEE(int id, String name) {
        super(id, name);
    }

    @Override
    public void work() {
        System.out.println("员工号为"+this.getId()+"的"+this.getName()+"正在开发网站");
    }
}

子类2:

public class Android extends Development{
    public Android() {
    }

    public Android(int id, String name) {
        super(id, name);
    }

    @Override
    public void work() {
        System.out.println("员工号为"+this.getId()+"的"+this.getName()+"正在开发APP");
    }
}

 子类的子类:

public abstract class Employee {
    private int id;
    private String name;

    public Employee() {
    }

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

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public abstract void work();
}

测试类:

public class Demo118Test2 {
    public static void main(String[] args) {
        JavaEE javaEE = new JavaEE(1,"张三");
        javaEE.work();
        System.out.println("——————————————————————");
        Android android = new Android(2,"李四");
        android.work();
    }
}

运行结果:

总结

1.继承

        ①概述:子类继承父类,可以直接使用父类中的非私有成员,子类不要写重复代码,提高了代码的复用率

        ②关键字:extends

        ③成员访问特点:a、成员变量:看符号左边是谁先调用谁中的成员变量,子类没有找父类

                                     b、成员方法:看new的是谁先调用谁中的成员方法,子类没有找父类

        ④方法的重写:a、概述:子类中有一个和父类从方法名以及参数列表上一样的方法

                                 b、验证:@Override

                                 c、使用场景:功能的升级改造

        ⑤继承中的构造的特点:new子类对象时先初始化父类

        ⑥继承的特点:

                        a、继承只支持单继承,不能多继承

                        b、继承支持多层继承

                        c、一个父类可以有多个子类

2.super和this关键字

        ①super

                a、概述:代表的是父类引用

                b、使用:调用父类构造方法:super()        super(实参)

                                 调用父类成员变量:super.成员变量名

                                 调用父类成员方法:super.成员方法名(实参)

         ②this

                a、概述:代表的是当前对象:哪个对象调用的this所在的方法this就代表哪个对象

                b、使用:调用当前对象的构造:this()        this(实参)

                                 调用当前对象的成员变量:this.成员变量名

                                 调用当前对象的成员方法:this.成员方法名(实参)

         ③注意

                super和this如果在构造中使用,都必须在第一行,所以不能同时手写出来

3.抽象

        ①抽象方法:修饰符 abstract 返回值类型 方法名(形参);

        ②抽象类:public abstract class 类名{}

        ③特点:

                a、抽象方法所在的类一定是抽象类

                b、抽象类中不一定必须有抽象方法

                c、抽象类中可以有私有属性构造,其他方法等

                d、抽象类不能new对象,只能new子类对象

                e、抽象类中可以有构造方法,但是是供创建子类对象时,初始化父类属性使用的

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

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

相关文章

【软考高项】二十四、整合管理基础内容

一、概述内容 定义 项目整合管理包括识别、定义、组合、统一和协调项目管理过程组的各个过程和项目管理活动,项目整合管理贯穿项目始终。目标 ①资源分配;②平衡竞争性需求;③研究各种备选方法;④裁剪过程以实现项目目标;⑤管理各个项目管理知识领域之间的…

前端性能分析工具及使用

Lighthouse Lighthouse (谷歌浏览器的插件商店中搜索并安装,浏览器中点击F12,开发者工具中可使用)是 Google 开发的一款工具,用于分析网络应用和网页,收集现代性能指标并提供对开发人员最佳实践的意见。只要…

node.js版本降级/升级

第一步.先清空本地安装的node.js版本 按健winR弹出窗口,键盘输入cmd,然后敲回车(或者鼠标直接点击电脑桌面最左下角的win窗口图标弹出,输入cmd再点击回车键) 进入命令控制行窗口,输入where node,查看本地…

关于YOLO模型架构中的strides

在Ultralytics YOLO模型架构中,m.stride是一个非常关键的属性,用于描述网络在不同尺度(scale)上的空间压缩程度。解释m.stride的原理之前,我们首先要了解深度学习中卷积神经网络(CNN)的基本工作…

png图片如何缩小体积?这个方法效果不错

图片压缩是我们生活中经常都会遇到的问题。在日常工作中图片体积过大的话,在使用过程中就会收到影响,比如加载过慢等。那么,当我们想要对png图片进行压缩处理的时候,要怎么操作呢?很简单,使用图片在线压缩&…

【sping】在logback-spring.xml 获取项目名称

在日志文件中我们想根据spring.application.name 创建出的文件夹。 也不想死在XML文件中。 application.yml spring:application:name: my-demo logback-spring.xml <springProperty name"application_name" scope"context" source"spring.app…

如何用微信小程序实现远程控制无人售货柜

如何用微信小程序实现远程控制无人售货柜呢&#xff1f; 本文描述了使用微信小程序调用HTTP接口&#xff0c;实现控制无人售货柜&#xff0c;独立控制售货柜、格子柜的柜门。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备名称厂商1智能WiFi…

数值分析复习:Richardson外推和Romberg算法

文章目录 Richardson外推Romberg&#xff08;龙贝格&#xff09;算法 本篇文章适合个人复习翻阅&#xff0c;不建议新手入门使用 本专栏&#xff1a;数值分析复习 的前置知识主要有&#xff1a;数学分析、高等代数、泛函分析 本节继续考虑数值积分问题 Richardson外推 命题&a…

网络爬虫快速入门及爬取百度搜索结果(附源码)

前言 爬虫的基本结构及工作流程 1. 确定目标 首先&#xff0c;确定你想要爬取的目标&#xff0c;包括目标网站或网页、需要提取的数据类型&#xff08;如文本、图片、视频等&#xff09;以及爬取的深度&#xff08;单页、整个网站等&#xff09;。 2. 获取网页内容 使用HT…

为智算产业高质量发展探寻路径,又一重要生态合作启动

4月22日&#xff0c;由中国工业经济联合会主办的“2024中国工业经济高峰论坛智能算力产业高质量发展论坛”落幕。院士专家、研究机构、以及来自智能算力产业上下游企业代表近180人出席&#xff0c;围绕完善算力基础设施、深化算力赋能行业应用、推动区域数字化发展等热点议题展…

【MySQL 数据宝典】【磁盘结构】- 005 Undo log 撤销日志

一、基本介绍 ​ 每当我们要对一条记录做改动时&#xff08;这里的改动可以指 INSERT 、 DELETE 、 UPDATE &#xff09;&#xff0c;都需要留一手 -> 把回滚时所需的东西都给记下来 ​ 你插入一条记录时&#xff0c;至少要把这条记录的主键值记下来&#xff0c;之后回滚的…

大数据技术应用实训室解决方案

一、大数据课程体系 1.1 大数据实验实训课程体系设计依据 大数据实验实训课程体系的设计依据主要围绕培养目标、培养方案和课程体系建设三个方面来展开。 1、培养目标 大数据实验实训课程的设计旨在培养具备大数据理论知识和实践技能的专业人才。具体而言&#xff0c;这些人才…

刷课必备!用Python实现网上自动做题

前言 开学少不了老师会布置一些 软件上面的作业&#xff0c;今天教大家用python制作自动答题脚本&#xff0c;100%准确率哦喜欢的同学记得关注、收藏哦 环境使用 Python3.8Pycharm 模块使用 import requests —> 数据请求模块 pip install requestsimport parsel —>…

TypeError: FormatCode() got an unexpected keyword argument ‘verify‘

背景 使用mmdet3d调试项目&#xff0c;提示下面的错误 笔者使用的mmcv版本为mmcv-full1.4.0 原因分析 从截图中可以看出错误出现在/usr/local/lib/python3.8/dist-packages/mmcv/utils/config.py的第496行&#xff1a;text, _ FormatCode(text, style_configyapf_style, v…

环回光模块

&#x1f44f;&#x1f4cd;环回光模块&#xff08;Lookback&#xff09;&#xff0c;也称为光模块自环测试回路器&#xff0c;用于测试系统或网络中的信号回传。通过回传信号&#xff08;主要是成对连接发射端到接收端的一侧&#xff09;&#xff0c;可以检测网络链路中各种潜…

java网络编程 BufferedReader的readLine方法读不到数据且一直阻塞

最近在整理Java IO相关内容&#xff0c;会遇到一些以前没有注意的问题&#xff0c;特此记录&#xff0c;以供自查和交流。 需求&#xff1a; 基于Java的BIO API&#xff0c;实现简单的客户端和服务端通信模型&#xff0c;客户端使用BufferedReader的readLine方法读取System.i…

​「Python绘图」绘制皮卡丘

python 绘制皮卡丘 一、预期结果 二、核心代码 import turtle print("开始绘制皮卡丘") def getPosition(x, y):turtle.setx(x)turtle.sety(y)print(x, y)class Pikachu:def __init__(self):self.t turtle.Turtle()t self.tt.pensize(3)t.speed(190)t.ondrag(getP…

隋总分享:Temu选品师算不算是蓝海项目?

在当今日新月异的互联网经济浪潮中&#xff0c;跨境电商正成为一股不可忽视的力量。最近&#xff0c;网红隋总对Temu选品师这一职业进行了深入介绍&#xff0c;引发了广泛关注。那么&#xff0c;Temu选品师是否真的可以视为一个蓝海项目呢?本文将对此进行一番细致的探讨。 首先…

python学习笔记B-08:序列结构之列表--列表的遍历操作

列表的遍历操作主要通过以下三种方法实现。 lst list("hello") print("第一种遍历方式&#xff0c;使用for循环&#xff0c;循环变量item直接就是lst中的元素") for item in lst:print(item,end"\t")print("\n\n第二种遍历方式&#xff0…

【HarmonyOS】Stage 模型 - 基本概念

一、项目结构 如图1所示&#xff1a; 图1 从项目结构来看&#xff0c;这个应用的内部包含了一个子模块叫 entry&#xff0c;模块是应用的基本功能单元&#xff0c;它里面包含源代码、资源、配置文件等。 像这样的模块在应用内部可以创建很多。但模块整体来讲就分成两大类&am…