Java-接口—知识(基础)

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

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

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

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

如果我们可以定义一个类,这个类里只有抽象方法,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博客

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

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

相关文章

【Linux】进程间通信——匿名管道|命名管道

目录 什么是进程间通信 管道 匿名管道 什么是进程间通信 进程间通信,顾名思义就是两个进程互相通信。 可是进程是独立的,该如何通信呢? 类比你和你的朋友在网上聊天,你们两个人也是独立的,是如何通信的呢&#xf…

C#学习笔记10:winform上位机与西门子PLC网口通信_中篇_winform的窗口操作设计、日志的添加使用

今日继续我的C#winform上位机学习之路 这系列笔记的目标是尝试编写一个能够与西门子PLC进行以太网口通信的上位机软件。 文章提供完整代码解释、设计点解释、测试效果图、完整工程下载 本章主要学习:Winform多个窗体的一些操作 、无边框窗体的创建、Combox组件插…

Linux:文本编辑器 - vim

Linux:文本编辑器 - vim vim基本操作普通模式模式切换移动光标复制粘贴删除替换撤销 底行模式行号查找 vim基本操作 Vim(Vi Improved)是一款功能强大的文本编辑器,是Unix/Linux系统中广泛使用的编辑器之一。它源于上世纪70年代开发的Vi编辑器&#xff0…

Understanding Diffusion Models: A Unified Perspective翻译和公式补充解读

“Understanding Diffusion Models: A Unified Perspective”是一篇写的非常好的扩散模型DDPM数学原理解读文章,这里翻译了一遍,对于一些细节补充记录一下,方便对照原文更好的理解。 这篇文章作者是Calvin Luo,来自Google Resear…

激活黑科技

下载/如何使用它? 方法 1 - PowerShell(推荐)Method 1 - PowerShell (Recommended) 右键单击 Windows 开始菜单,然后选择“PowerShell”或“终端(非 CMD)”。复制粘贴以下代码&…

ChatGLM3-6B大语言模型离线执行

ChatGLM3-6B大语言模型离线执行 模型准备 一般而言,模型和模型参数可以通过如下三个模型源进行相应的下载: HuggingFace | ModelScope | WiseModel 本实例中,使用的是HuggingFace的源下载,相应的地址如下: HuggingFa…

在线视频下载工具lux(原annie)安装及使用教程

安装教程 下载ffmpeg,参考这篇文章:Python——Windows下载ffmpeg由于博主的系统为windows,所以选择不安装lux,直接下载.exe文件,进入lux的github网站后,选择右侧的Releases,下载下图的windows …

求职要做在线人才测评,如果找人代做会被发现吗?

理论上都有办法能避开,这种在线测评的一定都有这个弊端,什么录音,录屏,录像,只要你愿意琢磨下,就一定有办法避开,除非是现场有人看着你。 但是我的观点是没必要作弊,使这个巧&…

起诉状与反诉状有什么不同,二者在写法上有何区别?李秘书讲写作教教你!

起诉状与反诉状有什么不同,二者在写法上有何区别?李秘书讲写作教教你! 起诉状和反诉状在民事诉讼中各自扮演着不同的角色,因此它们在内容和写法上有一些不同。#李秘书讲写作#这节就讲这个话题。 起诉状是原告向人民法院提起诉讼…

从 0 搭建公司Jenkins服务 Centos7

从 0 搭建公司Jenkins服务 Centos7 安装 (运维人员) 安装环境 配置DNS安装JDK17安装Jenkins安装Docker安装GIT安装Ansible启动Jenkins安装插件配置凭据配置共享库配置 (开发经理)使用 (开发、测试人员) 安装 (运维人员) 安装环境 配置DNS 新安装系统的服务器无法解析域名&a…

为什么选择成为一名程序员

选择成为一名程序员,其背后的原因往往既包含兴趣,也包含职业发展的考量。对于我来说,这两者并不是孤立的,而是相互交织,共同推动步入这一行业。 兴趣是选择成为程序员的重要驱动力。编程本身就是一种创造和解决问题的…

Calibre:如何在runset中设置LVS box

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 相关文章链接: Calibre:LVS 流程 在“Calibre: LVS 流程”文章里介绍了再rule file和图形界面如何设置lvs box,这里再分享一种lvs box设置方法: 通常我们会保存runset文件

CSS 基础:border 的 3 个基础属性和简写方法

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具合集 264篇…

SpringCloudAlibaba-整合nacos(二)

目录地址: SpringCloudAlibaba整合-CSDN博客 一、nacos服务部分 1.下载nacos,并执行数据库脚本:nacos-mysql.sql 2.修改配置文件,配置mysql 3.启动nacos ./startup.sh -m standalone 4.访问:http://127.0.0.1:884…

Golang快速入门教程(一)

目录 一、环境搭建 1.windows安装 2.linux安装 3.开发工具 二、变量定义与输入输出 1.变量定义 2.全局变量与局部变量 3.定义多个变量 4.常量定义 5.命名规范 6.输出 7.输入 三、基本数据类型 1.整数型 2.浮点型 3.字符型 4.字符串类型 转义字符 多行字符…

基于51单片机的多床位病房呼叫器Proteus仿真

地址:https://pan.baidu.com/s/1WLTBD9WaWncZS_uRSjM-iA 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectroni…

企业微信认证后可以修改主体吗?

企业微信变更主体有什么作用?如果原有的公司注销了,或者要更换一家公司主体来运营企业微信,那么就可以进行变更主体,变更主体后才可以保留原来企业微信上的所有用户,否则就只能重新申请重新积累用户了。企业微信变更主…

机器学习和深度学习--李宏毅(笔记与个人理解)Day9

Day9 Logistic Regression(内涵,熵和交叉熵的详解) 中间打了一天的gta5,图书馆闭馆正好npy 不舒服那天天气不好,哈哈哈哈哈总之各种理由吧,导致昨天没弄起来,今天补更! 这里重点注意…

面向对象设计原则实验“依赖倒置原则”

高层模块不应该依赖于低层模块。二者都应该依赖于抽象。抽象不应该依赖于细节。细节应该依赖于抽象。 (开闭原则、里氏代换原则和依赖倒转原则的三个实例很相似,原因是它之间的关系很紧密,在实现很多重构时通常需要同时使用这三个原则。开闭…

【智能优化算法详解】粒子群算法PSO量子粒子群算法QPSO

1.粒子群算法PSO 博主言简意赅总结-算法思想:大方向下个体自学习探索群体交流共享 对比适应度找到最优点 背景 粒子群算法,也称粒子群优化算法或鸟群觅食算法(Particle Swarm Optimization), 缩写为 PSO。粒子群…