Java_从入门到JavaEE_11

news2025/1/16 4:54:48

一、抽象类及抽象方法

1.认识抽象类及抽象方法

  1. 应用场景:当一个方法必须在父类中出现,但是这个方法又不好实现,就把该方法变成抽象方法,交给非抽象的子类去实现

  2. 实例:

    //抽象类
    public abstract class 类名{
        //抽象方法
        public abstract void method();
    }
    
  3. 抽象方法交给非抽象的子类去实现(重写)

2.抽象类及抽象方法的深入

  1. 抽象类中可以有构造方法、静态方法、成员方法、抽象方法

  2. 抽象类中可以没有抽象方法,但是毫无意义

  3. 如果父类是抽象类,子类不一定实现父类的抽象方法,子类如果是抽象类,可以不实现父类的抽象方法

  4. 抽象类可以有构造方法

  5. 不能使用new关键字来创建抽象类对象,创建的是匿名内部类的对象

    如图:在这里插入图片描述

二、接口

1.认识接口

  1. 含义:特殊的抽象类
  2. 注意:
    1. JDK1.8以前,接口中只能有静态常量和抽象方法
    2. JDK1.8开始,接口中添加了静态方法和默认方法
  3. 作用:定制标准
  4. 抽象类与接口的区别
    1. 抽象类:成员变量、静态变量、静态常量、成员方法、静态方法
    2. 接口:静态常量、静态方法(JDK1.8)、默认方法(JDK1.8)

2.接口的深入

  1. 类 - 接口之间的关系:

    ​ 类 - 类 :单继承

    ​ 类 - 接口:多实现

    ​ 接口 - 接口:多继承

  2. 一个类可以实现多个接口

  3. 一个接口不可以实现多个接口,因为接口与接口的关系是多继承

  4. 接口里面的方法不一定都是抽象的,JDK1.8之前:接口中只能有静态常量和抽象方法,JDK1.8开始:接口中可以使用默认方法和静态方法

  5. 接口解决了类的单继承问题,因为类与类是单继承,类与接口是多实现

  6. 一个类可以继承一个类并同时实现多个接口

  7. 接口不可以new对象,接口是特殊的抽象类,但是本质还是抽象类,抽象类是不可以new对象的,接口也是不能new对象,new出来的匿名类内部类的对象

三、多态

1.类的多态

  1. 理解:子类对象指向父类引用(父类引用中存储的是子类对象在堆中开辟的地址)

  2. 需求:老师骑着自行车上班

    分析:老师类、自行车类

    需求迭代:自行车 -> 小汽车

    步骤:创建Car,继承Vehicles,重写open()、close()

  3. 设计原则:前人总结的经验,告诉我们什么不该做

    设计模式:前人总结的经验,告诉我们具体怎么做

  4. OCP原则:

    ​ O - Open - 在需求升级时,对于创建类是欢迎的

    ​ (因为创建类对于原来代码的影响几乎为0)

    ​ C - Close - 在需求升级时,对于改动原有类是拒绝的

    ​ (因为原有类之间的关系是趋于稳定状态,如果改动原有类,

    ​ 很有可能打破这种平衡,导致bug的出现)

    ​ P - Principle - 原则

2.接口的多态

  1. 理解:实现类对象指向接口的引用(接口的引用中存储的是实现类对象在堆中开辟的地址)

  2. 需求:模拟电脑连接外部设备

    分析:

    ​ 接口 – IUSB

    ​ 鼠标 – 实现IUSB

    ​ 硬盘 – 实现IUSB

    ​ 电脑 – 连接IUSB接口

四、对象转型

引用数据类型的转型

  1. 向上转型(自动转型):子类类型 转 父类类型
  2. 向下转型(强制转型):父类类型 转 子类类型

1.向上转型

  1. 向上转型后,可以调用父类非私有化的成员属性
  2. 向上转型后,可以调用父类非私有化的成员方法
  3. 向上转型后,不可以调用子类的成员属性和成员方法
  4. 向上转型后,可以调用子类重写父类的方法
  5. 注意:向上转型就是多态
  6. 多态的优缺点:
    1. 优点:需求升级时不违反OCP原则
    2. 缺点:不可以调用子类独有的成员属性和成员方法

2.向下转型

  1. 注意:向下转型是有风险的

  2. 错误示范:

    Animal animal = new Animal();
    Dog dog = (Dog) animal;
    dog.eat();
    

    会报:ClassCastException - 类型转型异常
    原因:父类类型不能直接转换为子类类型

  3. 经验:向下转型之前,必须向上转型

    Animal animal = new Dog();
    	if(animal instanceof Dog){//判断引用animal中所指向的对象是否是Dog类型
    			Dog dog = (Dog) animal;
    			dog.eat();
    

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

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

相关文章

svg画扇形进度动画

有人问下面这种图好怎么画?svg 想了下,确实用svg可以,可以这么设计 外层是一个容器放置内容,并且设置overflow:hidden, 内层放一个半径大于容器宽高一半的svg,并定位居中,然后svg画扇形&#x…

STM32系统架构

以下是STM32系统架构中的各个重要组件和功能: 组件描述Cortex-M内核ARM Cortex-M系列内核,如M0、M0、M3、M4、M7等Flash存储器存储程序代码和数据SRAM存储程序运行时数据和堆栈外设接口GPIO、SPI、I2C、UART、TIM、ADC、DAC、USB、CAN、Ethernet等时钟和…

同一局域网如何从Windows系统拷贝文件到银河麒麟系统

1. 先将Windows下的、被拷贝文件所在文件夹设置为共享目录:在文件夹上单击右键选择“属性”菜单,弹出如下对话框: 按数字顺序单击鼠标左键,弹出如下对话框: 并将权限开放为Everyone,单击“共享”按钮。 在…

sed小实践2(随手记)

删除/etc/passwd的第一个字符 #本质是利用sg替换,将第一个字符替换成空 sed s|^.||g /etc/passwd删除/etc/passwd的第二个字符 sed -r s|^(.).(.*$)|\1\2|g /etc/passwd sed -r s|^(.).|\1|g /etc/passwd删除/etc/passwd的最后一个字符 sed s|.$||g /etc/passwd删…

解决docker安装Wordpress速度过慢的问题

先可以在dockerhub上查看Wordpress的详情: Dockerhttps://hub.docker.com/search?qwordpress 具体速度慢的问题如下: 现在打开docker右上角的设置图标,并进入docker engine,添加如下代码: "registry-mirrors&…

智慧生活:AI工具如何改变我们的工作与生活

文章目录 📑前言一、常用AI工具:便利与高效的结合1.1 语音助手1.2 智能推荐系统1.3 自然语言处理工具 二、创新AI应用:不断突破与发展2.1 医疗诊断AI2.2 智能家居2.3 无人驾驶技术 三、AI工具在人们生活中的应用和影响3.1 生活方式的变化3.2 …

The Lost Door

下载下来是一个exe文件 __int64 __fastcall check(char *a1) {char v1; // alchar v3[32]; // [rsp20h] [rbp-60h] BYREF_DWORD v4[8]; // [rsp40h] [rbp-40h] BYREF__int64 v5; // [rsp60h] [rbp-20h]__int64 v6; // [rsp68h] [rbp-18h]__int64 v7; // [rsp70h] [rbp-10h]__i…

Baidu Comate——AI时代的软件开发利器

目录 Comate产品介绍 1.产品背景 ​编辑 2.产品优势 3.产品特性 4. 支持开发环境及语言 5.使用场景 Comate产品体验 Comate场景应用 2.快捷键的使用 专业插件体验 1.行间注释 2. 代码优化 3.解释说明代码 4.调优建议 5.AutoWork Comate实测体验感受 Comate产品介绍…

制造版图大变革!逾10座晶圆厂蓄势待发 | 百能云芯

在全球半导体产业的激烈竞争和市场需求的复杂波动中,晶圆厂建设热潮正在美国兴起,这一波建设浪潮的核心动力之一,便是美国政府推出的《芯片与科学法案》所承诺的巨额补贴,旨在提升美国在全球半导体行业的竞争力。 当地时间4月25日…

ComStar系统架构介绍

中国外汇交易中心为适应市场需要,开发推出了ComStar外汇资金交易管理系统,该系统能够快速响应市场变化及监管机构的新要求,通过与交易中心银行间市场的外汇交易系统无缝连接,为市场成员提供了更为高效、便利、安全稳定的外汇资金业…

【Linux】shell基础,shell脚本

Shell Shell是一个用C语言编写的程序,接受用户输入的命令,并将其传递给操作系统内核执行。Shell还负责解释和执行命令、管理文件系统、控制进程,是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言 Shell脚本 Sh…

【笔记】债务危机

文章目录 大图景典型债务大周期基础概念债务的形成货币政策利率驱动印钞、购买金融资产为消费者提供资金 典型长期债务周期/债务大周期模型长期债务周期过程的形成过程 典型通缩型债务周期早期阶段泡沫阶段具体形成过程货币政策的作用泡沫特征 顶部萧条阶段和谐的去杠杆化无力时…

电脑文件x3daudio1 7.dll怎么修复?快速修复x3daudio1 7.dll的方法

你试过电脑文件x3daudio1 7.dll丢失么?如果你有遇到这种情况,那么可能你的某些程序就会启动不了,毕竟这个文件是用来处理音频功能的,那么我们要怎么去修复?下面我们一起来详细的了解电脑文件x3daudio1 7.dll这个文件吧…

QT--3

Qt 1>将文本编辑器完整实现 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->resize(800,600);edit1 new QTextEdit(this);edit1->resize(600…

情感分类学习笔记(1)

文本情感分类(二):深度学习模型 - 科学空间|Scientific Spaces 一、代码理解 cw lambda x: list(jieba.cut(x)) #定义分词函数 您给出的代码定义了一个使用 jieba 分词库的分词函数。jieba 是一个用于中文分词的 Python 库。该函数 cw 是…

二重积分(深度解析)

二重积分是二元函数在空间上的积分,同定积分类似,是某种特定形式的和的极限。本质是求曲顶柱体体积。重积分有着广泛的应用,可以用来计算曲面的面积,平面薄片重心等。平面区域的二重积分可以推广为在高维空间中的(有向…

Kafka 业务日志采集最佳实践

简介 Apache Kafka 是一个分布式流处理平台,主要用于构建实时数据流管道和应用程序。在收集业务日志的场景中,Kafka 可以作为一个消息中间件,用于接收、存储和转发大量的日志数据。将 Kafka 与其他系统(如 Elasticsearch、Flume、…

steam_api64.dll是什么东西?steam_api64.dll缺失的多个详细解决方法

在现代PC游戏领域,Steam无疑是最具影响力的游戏分发和社交平台之一。它不仅提供了一个庞大的游戏市场,还集成了好友系统、成就系统、云存储等多种功能,为数百万玩家提供了便捷的游戏体验。在这庞大的生态系统中,steam_api64.dll作…

vue3 依赖-组件tablepage-vue3版本1.0.3更新内容

github求⭐ 可通过github 地址和npm 地址查看全部内容 vue3 依赖-组件tablepage-vue3说明文档,列表页快速开发,使用思路及范例-汇总 vue3 依赖-组件tablepage-vue3说明文档,列表页快速开发,使用思路及范例(Ⅰ&#…

DDPM与扩散模型

很早之前就新建了一个专栏从0开始弃坑扩散模型 ,但发了一篇文章就没有继续这一系列,在这个AIGC的时代,于是我准备重启这个专栏。 整个专栏的学习顺序可以见这篇汇总文章 这是本专栏的第一章 目录 引言生成模型的发展历程 引言 扩散模型( Diffusion Mode…