尚硅谷 java 学习Day19 抽象类与抽象方法、接口、内部类

6-5 抽象类(abstract)与抽象方法(important)


一、什么叫抽象类:

有时候将一个父类设计的非常抽象,以至于它没有具体的实例,这样的类称为抽象类

abstract关键字的使用:

​ 1、abstract:抽象的

​ 2、abstract 可以修饰的结构:类和方法

​ 3、abstract 修饰类: 抽象类

​ >此类不能实例化

​ >类中仍然提供构造器,以便子类调用 (只要是类,一定会有构造器)

​ >开发中,都会提供抽象类的子类,让子类对象实例化,完成相关操作

包含抽象方法的类 一定是一个抽象类。反之,抽象类中可以没有抽象方法

​ 4、abstract 修饰方法:抽象方法

​ >只有方法的声明,没有方法体

​ >包含抽象方法的类 一定是一个抽象类。反之,抽象类中可以没有抽象方法

​ >若子类重写了父类中的所有的抽象方法后,则此子类方可实例化;

​ >若子类没有重写父类中所有的抽象方法,则此子类也是一个抽象类,需要使用 abstract 修饰

抽象类的格式 例如:

public abstract void eat();

abstract 的使用上的注意点:

1、不能用来修饰:属性、构造器等结构

2、abstract 不能用来修饰私有方法、静态方法、final 的方法、final 的类


抽象类的应用:模版方法的设计模式


6-6 接口(Interface):概述


接口的使用:

1、接口使用 interface 来定义

2、Java 中,接口和类是并列的两个结构

3、如何定义接口:定义接口中的成员

​ 3.1 JDK7 及以前:只能定义全局常量和抽象方法

​ >全局常量:public static final 的 (但是在编写代码的时候可以省略不写)

​ >抽象方法:Public abstract 的

​ 3.2 JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法(default)

​ >接口中定义的静态方法,只能通过接口去调用

​ >通过实现类的对象,可以调用接口中的默认方法;如果实现类重写了接口中的默认方法,调用时,调用重写后的方法

​ >如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的方法,那么子类在没有重写此方法的情况下,默认调用父类中的同名同参的方法–>类优先原则

​ >如果实现类实现了多个接口,而这多个接口中定义了同名同参数的默认方法,那么在实现类没有重写此方法的情况下,报错—>接口冲突

​ >如何在子类(或实现类)的方法中调用父类、接口中被重写的方法 主要利用 super

4、接口中不能定义构造器!!! 意味着接口不可以实例化

5、java 开发中,接口都通过让类去实现(implement)的方式来使用

​ 如果实现类覆盖了 接口中的所有的抽象方法,则此实现类可以实例化

​ 如果实现类没覆盖接口的所有的抽象方法,则此实现类仍为一个抽象类

6、Java 类可以实现多个接口 —>弥补了 Java 单继承性的局限性

​ 格式:class AA extends BB implements CC DD EE {}

7、接口之间 可以继承,而且 可以多继承

8、接口的具体使用,体现多态

9、接口实际上看作一种规范


面试题: 抽象类与接口 有哪些异同?

相同点
  1. 都不能被实例化
    • 抽象类和接口都不能直接创建对象,必须通过子类(实现类)来实例化。
  2. 都可以包含抽象方法
    • 抽象方法没有方法体,子类或实现类必须重写它们。
  3. 都用于定义类的行为规范
    • 它们都用于约束子类,使子类遵循一定的设计规则。
不同点**
比较项抽象类接口
关键字abstract classinterface
成员既可以有抽象方法,也可以有普通方法和成员变量只能有抽象方法(Java 8+ 可有 default 方法和 static 方法)
构造方法可以有构造方法不能有构造方法
变量允许有普通成员变量变量默认是 public static final(常量)
访问修饰符方法可以是 publicprotecteddefault,甚至 private方法默认是 public,不能有 privateprotected
多继承只能继承一个抽象类(单继承)可以实现多个接口(多继承)
使用场景适用于具有“is-a”关系的类(比如“动物是一种生物”)适用于“能做什么”的功能规范(比如“可飞行的对象”)


6-7 类的内部成员之五:内部类


1、在 Java 中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类

2、内部类的分类: 成员内部类 vs 局部内部类(方法内、代码块内、构造器内)

3、成员内部类:

​ 一方面,作为外部类的成员:

​ >调用外部类的结构

​ >可以被static 修饰

​ >可以被四种不同的权限修饰

​ 另一方面,作为一个类:

​ >类内可以定义属性、方法、构造器等

​ >可以被 final 修饰(言外之意:不被 final 修饰可以被继承

​ >可以被 abstract 修饰

4、关注如下三个问题

​ 一、如何实例化成员内部类的对象

IMG_0033

​ 二、如何在成员内部类中区分调用外部类的结构

IMG_0035

着重看一下三者调用的格式

三、开发中,局部内部类的使用

IMG_0037



总结

今日学习内容比较多,也有一定重叠,注意区分各部分的内容,重点主要在于接口和抽象类,内部类使用的频次比较少。
今日箴言:
This society is not friendly to introverted people.Don’t let laziness and procrastination imprision your free soul.

(这个社会对内向的人并不友好,不要被懒惰和拖延禁锢你自由的灵魂)

ps:今日看了国足 u20 比赛,1-2 输给了澳大利亚,机会也挺多,可惜没把握住,两个丢球都是自己的失误被打反击产生的,同时两个丢球间隔不到两分钟,这就和生活一样,挫折有时候总是接踵而至,可能一个打击让你还没回过神,下一个又来了,所以遇到挫折的时候不要走神,正视挫折,并不断去战胜它,不然确实很容易被接二连三的挫折打垮!

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

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

相关文章

【LeetCode Hot100 链表(上)】相交链表、反转链表、回文链表、环形链表、合并两个有序链表、两数相加

链表 1. 相交链表问题描述解决思路代码实现 2. 反转链表问题描述解决思路代码实现 3. 回文链表问题描述解决思路代码实现 4. 环形链表问题描述解决思路代码实现 5. 环形链表II问题描述解决思路代码实现 6. 合并两个有序链表问题描述解决思路代码实现 7. 两数相加问题描述解决思…

【Python pro】基本数据类型

一、数字类型 1.1 数字类型的组成 1.1.1 整数 (1)十进制,二进制0b,八进制0o,十六进制0x print(16 0b10000 0o20 0x10) # 输出:True(2)十进制转其他进制 a bin(16) b oct(1…

拯救者电脑在重装系统之后电源计划丢失Fn+Q切换不了模式怎么恢复?

参考联想知识库的一下链接: https://iknow.lenovo.com.cn/detail/196192 其中下载的解压文件后的文件需要复制粘贴到D盘的根目录下,再来运行文件。若在生成的log文件中看到导入成功以及控制面板中看到已添加的电源计划即可 如果还是无效可是试试以下的…

ubuntu 执行 sudo apt-get update 报错

记录一下,遇到这个问题了,网络上看到的解决办法,亲测有效 执行sudo apt-get update ,却报以下错误,“SECURITY: URL redirect target contains control characters rejecting ” 经检查发现,/etc/apt/source.list 下的…

深度集成DeepSeek大模型:WebSocket流式聊天实现

目录 5分钟快速接入DeepSeek大模型:WebSocket实时聊天指南创建应用开发后端代码 (Python/Node.js)结语 5分钟快速接入DeepSeek大模型:WebSocket实时聊天指南 创建应用 访问DeepSeek官网 前往 DeepSeek官网。如果还没有账号,需要先注册一个。…

java断点调试(debug)

在开发中,新手程序员在查找错误时, 这时老程序员就会温馨提示,可以用断点调试,一步一步的看源码执行的过程,从而发现错误所在。 重要提示: 断点调试过程是运行状态,是以对象的运行类型来执行的 断点调试介绍 断点调试是…

软件技术实训室解决方案(2025年最新版)

软件产业作为新兴产业的核心组成部分,是推动数字经济发展的重要力量。在“十四五”规划的新机遇与挑战下,我国已明确将加强关键数字技术创新应用作为战略重点,并将软件和信息技术服务业的发展列为重中之重。这不仅是为了加速构建现代产业体系…

foobar2000设置DSP使用教程及软件推荐

foobar2000安卓中文版:一款高品质手机音频播放器 foobar2000安卓中文版是一款备受好评的高品质手机音频播放器。 几乎支持所有的音频格式,包括 MP3、MP4、AAC、CD 音频等。不论是经典老歌还是最新的流行音乐,foobar2000都能完美播放。除此之…

DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地

对于个人开发者或尝鲜者而言,本地想要部署 DeepSeek 有很多种方案,但是一旦涉及到企业级部署,则步骤将会繁琐很多。 比如我们的第一步就需要先根据实际业务场景评估出我们到底需要部署什么规格的模型,以及我们所要部署的模型&…

I2C、SPI、UART

I2C:串口通信,同步,半双工,双线(数据线SDA时钟线SCL),最大距离1米到几米 SPI(串行外设接口):串口通信,同步,全双工,四线&…

uniapp 连接mqtt

1:下载插件 npm install mqtt 2:创建 mqtt.js /* main.js 项目主入口注入实例 */ // import mqttTool from ./lib/mqttTool.js // Vue.prototype.$mqttTool mqttTool/* 使用范例见 /pages/index/index.vue */ // mqtt协议:H5使用ws/wss APP-…

shell脚本备份PostgreSQL数据库和库下表

注意: 以下为对PostgreSQL13.16版本数据库备份shell脚本参考请确认备份节点上psql和pgdump的版本不至于太低,建议>13.16该脚本目前是对于整库、(默认针对public这个schema,如果有其他schema,请自行添加一层循环&am…

EXCEL解决IF函数“您已为此函数输入太多个参数”的报错

IF函数的基本结构是IF(条件, 值为真时的结果, 值为假时的结果),所以标准的IF函数最多只能有三个参数。当用户输入的参数超过三个时,Excel就会报这个错误。比如多个IF语句叠加,但可能在嵌套的过程中没有正确关闭每个IF函数的括号,导…

图像质量评价指标-UCIQE-UIQM

一、评价指标UCIQE 在文章《An underwater color image quality evaluation metric》中,提到的了评价指标UCIQE(Underwater Colour Image Quality Evaluation),是一种无参考图像质量评价指标,主要用于评估水下图像的质…

Vue 前端开发中的路由知识:从入门到精通

文章目录 引言1. Vue Router 简介1.1 安装 Vue Router1.2 配置 Vue Router1.3 在 Vue 实例中使用 Vue Router 2. 路由的基本用法2.1 路由映射2.2 路由视图2.3 路由链接 3. 动态路由3.1 动态路径参数3.2 访问动态参数3.3 响应路由参数的变化 4. 嵌套路由4.1 定义嵌套路由4.2 渲染…

基于Springboot+微信小程序调用文心一言大模型实现AI聊天

一、文章前言 此文主要实现基于Springboot微信小程序调用文心一言大模型实现AI聊天对话功能,使用Java作为后端语言进行支持,界面友好,开发简单。 二、开发流程及工具准备 2.1、登录百度智能云平台,获取 API Key 和 Secret Key两个…

leaflet前端初始化项目

1、通过npm安装leaflet包,或者直接在项目中引入leaflet.js库文件。 npm 安装:npm i leaflet 如果在index.html中引入leaflet.js,在项目中可以直接使用变量L. 注意:尽量要么使用npm包,要么使用leaflet.js库,两者一起使用容易发生…

Deepseek官网接口文档

API 接口 生成完成 生成聊天完成 创建模型 列出本地模型 显示模型信息 复制模型 删除模型 拉取模型 推送模型 生成嵌入 列出运行中的模型 版本 约定 模型名称 模型名称遵循 model:tag 格式,其中 model 可以有一个可选的命名空间,例如 ex…

容器运行常见数据库

一.涉及镜像压缩包 均为amd架构版本:mysql:5.7.42、postgres:13.16、dm8:20250206_rev257733_x86_rh6_64、oceanbase-ce:v4.0、opengauss:5.0.2 通过网盘分享的文件:db.tgz 链接: https://pan.baidu.com/s/1EBbFPZj1FxCA4_GxjVunWg?pwd563s 提取码: 5…

python爬虫系列课程2:如何下载Xpath Helper

python爬虫系列课程2:如何下载Xpath Helper 一、访问极简插件官网二、点击搜索按钮三、输入xpath并点击搜索四、点击推荐下载五、将下载下来的文件解压缩六、打开扩展程序界面七、将xpath.crx文件拖入扩展程序界面一、访问极简插件官网 极简插件官网地址:https://chrome.zzz…