Java-接口—知识(基础)

news2024/12/23 7:55:29

承接上一节,我们讨论了抽象类和抽象方法。

那我们尝试在抽象的道路上走的更远一点,先来总结一下抽象;

抽象类:类中的属性规范了子类必须有什么样的特征,有什么状态。类中的方法规范了子类必须有什么行为,有什么功能。

小总结:抽象类实际上可以看作对子类的一整套的规范要求。

如果我们可以定义一个类,这个类里只有抽象方法,JAVA上称之为接口---interface.

接口的语言规范:

  1. 接口不能有属性:接口就是一组抽象方法的集合
  2. 接口的方法必须都是抽象方法,不能有方法体:既然创建一个比抽象类更抽象的一个类,那少了属性,只剩下的就是抽象方法。
  3. 既然都是抽象方法,那么abstract这个修饰符也可以省略了
  4. 接口的所有的方法都必须是public:既然你要在另一个类实现它,让抽象方法不可见这不就矛盾了嘛。
当然啊,肯定就会有人提出:那光定义出一个抽象类,里面啥也没有就全写抽象方法,再让子类继承不就行了嘛;别急别急,稍后解答。

 接口的创建:

接口的创建格式:

public interface 接口名
{
   //抽象方法...
   方法返回类型 方法名(参数列表);
   方法返回类型 方法名(参数列表);
   ...//抽象方法只有声明
}

 前面说了接口也算是个类,就是里面全是方法——因为没有属性,还全是抽象方法,这点有点特殊,所以就专门写成 interface,不再使用class。我们通常口头上说的类就是只class,接口就是接口。

接口的实现:

抽象类中定义的抽象方法,做到了方法声明和方法实现的分离。抽象类与子类是靠继承,接口的实现也会找一个类实现,大致如此。

接口中定义的抽象方法需要某个类实现这些方法,这时候不再是extends,而是implements(实现);

那么实现接口的这些类就叫做该接口的实现类,并且实现的是接口所有的抽象方法。

总结:类与类之间具有抽象与具体的关系才会用继承,但任何类都可以实现任何接口。

继承里,子类只能单一继承,而接口里,类可以同时实现多个接口。

正如上图,小学生这个类继承了学生类,实现了日常作业DailWork和Recreation娱乐两个接口。 

说到这里,我们上面提出的那个问题的答案已经浮出水面:子类要实现某些特殊的行为,但在父类/抽象类里面不能盲目加上,因为其他子类不一定需要这些方法,如果只因满足一个子类而在父类擅自修改,会影响后面无数子类的代码。

所以接口出现了,而且子类只能单一继承,而一个类可以同时实现多种接口。

接口的实现细节: 

public interface DailyWork {
    void takingClass();
    void doHomework();//这是接口的创建,抽象方法的声明

}
public class PrimaryStudent implements DailyWork
{
    public void takingClass()
    {
        System.out.println("日常上课,语数外");
    }
    public void doHomework()//抽象方法在实现的时候,主动标上public,否则...
    {
        System.out.println("日常完成作业,语数外");
    }

}

抽象方法的介绍在这里:JAVA—抽象—定义抽象类Converter及其子类WeightConverter-CSDN博客

没错,小细节就是在实现接口时,需要主动加上public,和方法声明不同,它不是默认public,前面之所以可以省略public abstract,是因为接口里面全是公开的抽象方法,全都是,所以可以省略。

不加public的话,就是:默认是private

在实现类里面,需要我们亲自标注。

知识了解完了,是骡子是马牵出来溜溜——Java-接口-定义接口Filter及其实现类WordFilter-CSDN博客

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

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

相关文章

【Spring Security】2.实现最简单的身份验证

文章目录 一、找到官网的身份认证(authentication)示例代码二、实现最简单的身份验证1、创建Spring Boot项目2、创建IndexController3、创建index.html4、启动项目测试Controller 三、{/logout}的作用四、页面样式无法加载的问题 一、找到官网的身份认证…

文本处理常见命令

目录 前言-了解Linux目录结构 一、cat-查看文件内容 1.表现形式 2.常用选项 3.示例 二、more-查看文件内容 1.表现形式 2.交互操作方法 3.示例 三、less-查看文件内容 1.表现形式 2.交互操作方法 四、head-从头查看文件内容 五、tail-从尾查看文件内容 六、wc-统…

设计模式学习笔记 - 设计模式与范式 -行为型:10.迭代器模式(中):遍历集合时,为什么不能增删集合?

概述 上篇文章,我们通过给 ArrayList 和 LinkedList 容器实现迭代器,学习了迭代器模式的原理、实现和设计意图。迭代器模式主要主要是解耦容器代码和遍历代码。 本章,我们来深挖一下,如果在使用迭代器遍历集合的同时增加、删除集…

1999-2022年各省研究与试验发展人员全时当量数据/省研发人员全时当量数据/(RD)人员全时当量(无缺失)

1999-2022年各省研究与试验发展人员全时当量数据/省研发人员全时当量数据/(R&D)人员全时当量(无缺失) 1、时间:1999-2022年 2、来源:科技年鉴 3、指标:研究与试验发展人员全时当量/研发人员全时当量 4、范围&a…

代码随想录算法训练营Day50|LC123 买卖股票的最佳时机IIILC188 买卖股票的最佳时机IV

一句话总结:虽然是困难题,其实都只需要对122 买卖股票的最佳时机II稍作变形即可。 原题链接:123 买卖股票的最佳时机III 相较于买卖股票的最佳时机和股票II来说,本题加了最多操作两次的限制。那么这里实际上就可以直接用滚动数组…

用C代码实现环形缓冲区(ring buf)

用C代码实现环形缓冲区(ring buf) 概述环境介绍launch.json(没改)tasks.json注意 代码ringbuf.cringbuf.hmain.c 测试说明工程代码下载 概述 因嵌入式项目需要,串口接收的数据有很高的周期性发送频率,原方式通过查询接…

小程序项目思路分享爬虫

小程序项目思路分享爬虫 具体需求: 有这几个就行,门店名称门店地址门店类型,再加上省、市、县/区门店名称:storeName 门店地址:storeAddress 程序运行: honor_spider获取经纬度信息。 经纬度——>详…

Mybatis plus 使用通用枚举

说明&#xff1a;mybatis plus 使用枚举可实现数据库存入时指定值保存&#xff0c; 读取时指定值展示&#xff08;返给前端&#xff09; 可通过继承IEnum<T>、 EnumValue实现 1、引包 <dependency><groupId>mysql</groupId><artifactId>mysql-…

esxi上给centos7虚拟机扩容硬盘

原来centos7硬盘分配的空间只有40GB 需要直接扩容到200GB 扩容前 扩容后 扩容步骤&#xff1a; 1 .在esxi平台上关机虚拟机&#xff0c;将硬盘调整为200GB&#xff0c;然后开机 2.请出chatGPT 1. 创建新分区 使用剩余的磁盘空间创建一个新的分区。你可以使用fdisk&#xf…

归档数据shell脚本

系统中数据很重要&#xff0c;为确保数据不会丢失&#xff0c;定时备份数据是一个必要的习惯。制定一个存储重要文件的数据备份计划也绝非易事&#xff0c;而shell脚本可以祝我们一臂之力。 1.创建需要备份配置文件的路径文件。(BACKUP_FILE) 2.以日期为备份文件的后缀。 3.判断…

LeetCode 热题 100 | 多维动态规划(二)

目录 1 5. 最长回文子串 2 1143. 最长公共子序列 菜鸟做题&#xff0c;语言是 C 1 5. 最长回文子串 核心思想&#xff1a;把总问题拆解为若干子问题。 总问题&#xff1a;从第 i 个字母到第 j 个字母是回文串子问题&#xff1a;从第 i 1 个字母到第 j - 1 个字母是回文…

【就近接入,智能DNS-Geo DNS ,大揭秘!】

做过后端服务或者网络加速的小伙伴&#xff0c;可能或多或少都听说过&#xff0c;智能DNS或者Geo DNS&#xff0c;就是根据用户的位置&#xff0c;返回离用户最近的服务节点&#xff0c;就近接入&#xff0c;以达到服务提速的效果。 那么大家有没想过&#xff0c;这个背后的原理…

ETLCloud结合kafka的数据集成

一、ETLCloud中实时数据集成的使用 在ETLCloud中数据集成有两种方式&#xff0c;一种是离线数据集成&#xff0c;另一种便是我们今天所要介绍的实时数据集成了&#xff0c;两者的区别从名字便可以得知&#xff0c;前者处理的数据是离线的没有时效性的&#xff0c;后者的数据是…

【Keil5-Boot和APP配置】

Keil5-Boot和App配置 ■ Keil5-Boot和APP配置■ 一&#xff1a;sct文件 sct文件配置■ 二&#xff1a;发布版本不需要在 C/C&#xff0c;Asm&#xff0c;Linker&#xff0c;中添加 CMDDEBUG 宏定义。■ 三&#xff1a;Debug版本需要在Linker添加 --pd"-DCMDDEBUG" 才…

4.进程相关 2

8.内存映射 8.1 内存映射相关定义 创建一个文件&#xff0c;将保存在磁盘中的文件映射到内存中&#xff0c;后期两个进程之间对内存中的数据进行操作&#xff0c;大大减少了访问磁盘的时间&#xff0c;也是一种最快的 IPC &#xff0c;因为进程之间可以直接对内存进行存取 8.…

视觉大模型--DeformableDETR

原理大家可以参考这篇文章&#xff0c;我这边主要介绍几个公式和整体源码理解。 提出了多尺度可变形注意力(Multi-scale Deformable Attention, MSDA).基于此设计了 DETR 特有的利用多尺度特征检测的流程&#xff0c;对之后的很多工作有指导意义。提出了两阶段 DETR 的思路&…

OpenHarmony应用开发引入开源C/C++库---之Har包里的NDK

Har 包 HAR&#xff08;Harmony Archive&#xff09;是静态共享包&#xff0c;可以包含代码、C 库、资源和配置文件。通过 HAR 可以实现多个模块或多个工程共享 ArkUI 组件、资源等相关代码。HAR 不同于 HAP&#xff0c;不能独立安装运行在设备上&#xff0c;只能作为应用模块…

pandas常用的一些操作

EXCLE操作 读取Excel data1 pd.read_excel(excle_dir) 读Excel取跳过前几行&#xff1a; data1 pd.read_excel(excle_dir,skiprows1) 获取总行数 data1.shape[0] 获取总列数 data1.shape[1] 指定某列数据类型 data1 pd.read_excel("C:数据导入.xlsx",dtype…

设计模式——装饰器模式09

装饰器模式&#xff1a;是在原有基础上进行装饰&#xff08;无修改原来代码&#xff09;&#xff0c;来添加新的功能。 例如下面对普通耳机进行装饰。 设计模式&#xff0c;一定要敲代码理解 修饰对象&#xff08;抽象&#xff09; /*** author ggbond* date 2024年04月07日…

Unity核心学习

目录 认识模型的制作流程模型的制作过程 2D相关图片导入设置图片导入概述纹理类型设置纹理形状设置纹理高级设置纹理平铺拉伸设置纹理平台打包相关设置 SpriteSprite Editor——Single图片编辑Sprite Editor——Multiple图片编辑Sprite Editor——Polygon图片编辑SpriteRendere…