JavaSE 面向对象程序设计进阶 抽象类和接口 2024年详解

目录

抽象类

抽象方法

抽象类和抽象方法的注意事项

​编辑

接口

如何定义接口

注意

代码实现

​编辑

接口中的成员特点

接口和类之间的关系

1.类与类的关系

2.类与接口的关系

3.接口与接口的关系

​编辑

拓展

接口中的默认方法

接口中的静态方法

​编辑

接口中的私有方法

接口的应用

个人号推广

博客主页

Web后端开发

Web前端开发

数据库开发

项目实战

算法与数据结构

计算机基础

回忆录


抽象类

继承:子类直接访问父类中的非私有成员

类的成员分为成员属性,成员方法

方法重写的弊端 别人忘了重写 故意不重写

所以要用抽象类

抽象方法 子类必须强制书写 不然就会报错

抽象方法

将共性的行为(方法)抽取到父类后,由于每一个子类执行的内容是不同的,所以在父类中不能确定具体的方法体,该方法就可以定义为抽象方法

抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类

public abstract class person{
    public abstract void work();
}

抽象类和抽象方法的注意事项

1.抽象类不能实例化 创建对象

2.抽象类中不一定有抽象方法,可以有普通发法,有抽象方法的类一定是抽象类

3.可以有构造方法

4.抽象类的子类

要么重写抽象类中的所有抽象方法

要么是抽象类

子类继承抽象类,必须要重新写父类里所有抽象方法

接口

接口是一种规则

对行为的抽象

接口侧重于行为

抽象类侧重于事物

如何定义接口

关键字interface 定义接口

接口不能实例化,不能创建对象

关键字implements 表示类与接口之间的实现关系

public interface 接口名{}
public class 类名 implements 接口名{}

接口的子类 实现类

1.要么重写接口中所有的抽象方法

2.要么是抽象类

注意

1:类与接口的实现关系,可以单实现,也可以多少多实现

public class 类名 implements 接口1,接口2{}

2.实现类还可以在继承一个类的同时实现多个接口

public class 类名 extends 父类 implements 接口名1,接口名2{}

代码实现

创建接口

先写父类 再写接口 再写子类

接口中的成员特点

1.成员变量

只能是常量

默认修饰符 public

2.构造方法

没有 接口不能创建对象 接口没有构造方法

3.成员方法

jdk7之前

只能定义抽象方法

接口和类之间的关系

1.类与类的关系

继承关系,只能单继承,不能多继承,但可以多层继承

2.类与接口的关系

实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

重写方法时会将所有接口里的重名方法全覆盖

3.接口与接口的关系

可以单继承,也可以多继承

如图 接口1和接口2继承于接口3

创建一个类链上接口3后要将接口1,接口2,接口3中的方法全部重写

拓展

大佬写接口 小弟来用

jdk7 以前 只要接口变化 添加了新的方法 实现类必须同时改变

jdk7后优化了这个问题,实现了接口升级

方法里存在有方法体的方法

接口中的默认方法

默认方法不是抽象方法,所有不强制被重写

默认方法可重写可不重写

接口中的静态方法

静态方法不需要重写

不能重写

如何调用

接口中的私有方法

普通的私有方法 静态的私有方法

普通的私有方法 给默认方法服务的

静态的私有方法 给静态方法服务的

私有方法解决默认方法抽取方法问题重复代码抽取出来,又不想由外界提供

接口的应用

1.想让某个javabean实现对应的行为,就使用哪个接口

接口是各种各样行为的规则,是行为的抽象,想让哪个类拥有一个行为,就让类实现对应的接口就行了

2.方法的形参写成接口 则可以传递接口所有实现类对象

这个叫接口多态

3.适配器设计模式

中间站 适配器 让中间类对接口里所有方法空实现

然后新建一个类再继承中间的适配器

当一个接口中抽象方法过多,我们只要使用其中一部分的时候,就可以用适配器设计模式

书写步骤

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网站配置https,购买ssl证书,配置域名,配置nginx,实现安全访问

文章目录 前言一. 域名1. 购买域名2. 添加记录 二. ssl证书创建测试证书购买正式证书证书签发证书申请提交审核DNS验证审核通过下载证书 三. 部署nginx上传ssl证书配置nginx.conf文件找到nginx.conf文件编辑nginx.conf文件重启nginx 前言 当你创建了一个网站后,通过…

73. UE5 RPG 优化投射物以及敌人生成

解决发射物会与地面产生交互的问题 之前一直遇到发射物的体积过大会在发射时,和地面产生交互,我们可以调整小一些,然后为了防止它和自身产生交互事件。我们可以实现它在生成后,不会触发相关事件,而是在一定时间后。 对…

振弦式渗压计在土木工程安全监测中的重要性解析

在土木工程领域中,特别是涉及到坝体、隧道、路基等复杂结构的监测与安全管理时,渗压计作为一种关键的测量工具,发挥着举足轻重的作用。其中,振弦式渗压计以其独特的优点,得到了广泛的应用和认可。本文将对振弦式渗压计…

一文读懂 HTTP 和 RPC 的区别

随着互联网技术的发展,网络通信在各种应用中扮演着至关重要的角色。无论是构建 Web 应用还是进行服务之间的交互,选择合适的通讯协议成为开发者们需要深入思考的问题。在众多协议中,HTTP(HyperText Transfer Protocol)…

【IEEE ACCESS】论文发表记录 2

上次发IEEE ACCESS 感觉不错,速度较快,审稿费也不太夸张,这次梅开二度,希望好运。 官网:IEEE Access: The Multidisciplinary Open Access Journal 期刊水平: 范围认证 -中国科学院文献情报中心期刊分区表…

VBA学习(13):获取多层文件夹内文件名并建立超链接

代码使用了FileSystemObject对象和递归的方法实现文件夹和文件的遍历功能。分别将文件夹名称和文件名提取在表格的A/B列,并对文件名创建了超链接。 示例代码如下: Sub AutoAddLink()Dim strFldPath As StringWith Application.FileDialog(msoFileDialog…

好用的便签是什么 电脑桌面上好用的便签

作为一名文字工作者,我经常需要在繁杂的思绪中捕捉灵感,记录下那些一闪而过的想法。在寻找一款适合电脑桌面的便签应用时,我偶然发现了敬业签便签软件简直是为我量身定制的,它不仅界面简洁,操作便捷,更重要…

中国计算机学会芯片大会 (CCF Chip 2024)

🌟 中国计算机学会芯片大会(CCF Chip Conference,简称:CCF Chip) 将于📅 2024年7月19日至21日在上海市松江区上海富悦大酒店召开。 🎉 #CCF Chip 2024# 主题前瞻:"发展芯技术,智算芯未来&q…

【Java】已解决java.net.HttpRetryException异常

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例 已解决java.net.HttpRetryException异常 在Java的网络编程中,尤其是使用Apache HttpClient或其他类似的HTTP客户端库时,可能会遇到java.net.HttpRetryException异常。这个…

MMDetection 目标检测 —— 环境搭建和基础使用

参考文档 开始你的第一步 — MMDetection 3.3.0 文档 依赖 步骤 0. 下载并安装 Anaconda。 步骤 1. 创建并激活一个 conda 环境。(我选择的是python3.10) conda create --name openmmlab python3.8 -y conda activate openmmlab 步骤 2. 基于 PyTo…

Spring Boot基础入门

引言 Spring Boot是一个开源的Java框架,旨在简化Spring应用程序的创建和部署过程。它提供了一种快速和简便的方式来创建独立的、生产级别的基于Spring的应用程序。本文将介绍Spring Boot的基础知识,包括其核心特性、如何开始使用Spring Boot以及构建你的…

将强化学习重新引入 RLHF

我们很高兴在 TRL 中介绍 RLOO (REINFORCE Leave One-Out) 训练器。作为一种替代 PPO 的方法,RLOO 是一种新的在线 RLHF 训练算法,旨在使其更易于访问和实施。特别是, RLOO 需要的 GPU 内存更少,并且达到收敛所需的挂钟时间也更短…

01 Shell编程规范与变量

1、Shell脚本概述 在一些复杂的Linux维护工作中,大量的重复性的输入和交互操作不仅费力费时,而且容易出错,而编写一个恰到好处的Shell脚本程序,可以批量处理、自动化地完成一系列维护任务,大大减轻管理员的负担。 Sh…

【CT】LeetCode手撕—54. 螺旋矩阵

目录 题目1- 思路2- 实现⭐54. 螺旋矩阵——题解思路 3- ACM实现 题目 原题连接&#xff1a;92. 反转链表 II 1- 思路 模式识别&#xff1a;螺旋矩阵 ——> 用四个指针来顺时针遍历 2- 实现 ⭐54. 螺旋矩阵——题解思路 class Solution {public List<Integer> spir…

RuoYi Swagger请求401

问题描述&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 使用ruoyi-vue分离版&#xff0c;访问swagger&#xff0c;发现接口都调用失败&#xff1a;401 解决方案&#xff1a; 最终解决问题如下步骤&#xff1a; 1、 调用swagger中的接口&#xff0c;报错&a…

QT MQTT (二)编译与集成

一、QT MQTT 提供 MQTT 客户端服务的 Qt 专用库基于标准化发布 / 订阅协议&#xff0c;用于在设备和组件之间可靠地共享数据。MQTT 是为保证状态正确性、满足高安全标准和交换最小数据而设计的协议&#xff0c;因此被广泛应用于各种分布式系统和物联网解决方案中。 Qt开发MQT…

修改源码,打patch包,线上环境不生效

1.首先看修改的源码文件是否正确 在node_modules中&#xff0c;找对应的包&#xff0c;然后查看包中package.json 的main和module。如果用require引入&#xff0c;则修改lib下面的组件&#xff0c;如果是import引入则修改es下面的文件 main 对应commonjs引入方式的程序入口文件…

WPF 数据分组显示

WPF 数据分组显示 效果展示&#xff1a; Student类&#xff1a; public class Student {public string Name { get; set; }public string Class { get; set; }public int Age { get; set; } }MainWindow.xaml.cs public partial class MainWindow : Window {private Observ…

数据结构-图的基本概念

图的定义 图时由非空的顶点集合和一个描述顶点之间关系的集合组成。可以定义为&#xff1a; ​​​​​​​ ​​​​​​​ ​​​​​​​ G表示一个图&#xff0c;V表示点集&#xff0c;E表示边集。集合E的每一个二元组都包含两个值和&#xff0c;表示…

超薄续航,加量不加厚,这款手机甩某果几条街!

据微博知名数码博主爆料&#xff0c;一加即将推出的Ace3 Pro将搭载革命性的“冰川电池”&#xff0c;这是一款6100mAh容量的先进电池&#xff0c;比传统5000mAh电池薄0.49毫米&#xff0c;仅5.51毫米厚&#xff0c;且支持100W快充&#xff0c;可在30分钟内充满。 &#xff08;比…