接口详细说明

接口概述

接口也是一种规范

接口的定义与特点

接口的格式如下:

//接口用关键字interface来定义
public interface 接口名 {// 常量// 抽象方法
} 

JDK8之前接口中只能是抽象方法和常量,没有其他成分了。

接口不能实例化。

接口中的成员都是public修饰的,写不写都是,因为规范的目的是为了公开化。 

示例: 

public interface SportManInterface {// 接口中的成员:JDK 1.8之前只有常量 和 抽象方法// public static final 可以省略不写,接口默认会为你加上!// public static final String SCHOOL_NAME = "黑马";String SCHOOL_NAME = "黑马";// 2、抽象方法//  public abstract 可以省略不写,接口默认会为你加上!// public abstract void run();void run();// public abstract void eat();void eat();
}

接口的基本使用:被实现

接口是用来被类实现(implements)的,实现接口的类称为实现类。

实现类可以理解成所谓的子类。

修饰符 class 实现类 implements 接口1, 接口2, 接口3 , ... {
}
//实现的关键字:implements

从上面可以看出,接口可以被类单实现,也可以被类多实现。

示例:

/**实现类(子类)*/
public class PingPongMan implements SportMan , Law{private String name;public PingPongMan(String name) {this.name = name;}@Overridepublic void rule() {System.out.println(name + "要遵章守法,不能随意外出,酗酒,约会~~~");}@Overridepublic void run() {System.out.println(name + "必须要跑步训练~~");}@Overridepublic void competition() {System.out.println(name + "需要参加国际比赛~~");}
}

接口实现的注意事项: 一个类实现接口,必须重写完全部接口的全部抽象方法,否则这个类需要定义成抽象类。

接口与接口的关系:多继承

基本小结

类和类的关系:单继承。

类和接口的关系:多实现。

接口和接口的关系:多继承,一个接口可以同时继承多个接口。

接口多继承的作用

规范合并,整合多个接口为同一个接口,便于子类实现。

JDK8开始接口新增方法

JDK8版本开始后,Java只对接口的成员方法进行了新增。

原因如下:

项目Version2.0需要对Inter接口丰富,加入10个新的抽象方法,此时改了接口就要所有实现类实现这些方法。

如何能在丰富接口功能的同时 又不对子类代码进行更改呢?

允许接口中直接定义带有方法体的方法,那么子类就无需实现新的方法。 

第一种:默认方法

类似之前写的普通实例方法:必须用default修饰 默认会public修饰。需要用接口的实现类的对象来调用。

default void run(){System.out.println("--开始跑--");
}

第二种:静态方法

默认会public修饰,必须static修饰。

注意:接口的静态方法必须用本身的接口名来调用。

static void inAddr(){System.out.println("我们都在黑马培训中心快乐的学习Java!");
}

第三种:私有方法

就是私有的实例方法:,必须使用private修饰,从JDK 1.9才开始有的。

只能在本类中被其他的默认方法或者私有方法访问。

private void go(){System.out.println("--准备--");
}

总结

JDK8开始后新增了那些方法?

默认方法:default修饰,实现类对象调用。

静态方法:static修饰,必须用当前接口名调用

私有方法:private修饰,jdk9开始才有的,只能在接口内部被调用。

他们都会默认被public修饰。 

注意:JDK8新增的3种方法我们自己在开发中很少使用,通常是Java源码涉及到的,我们需要理解、识别语法、明白调用关系即可。

使用接口的注意事项

1、接口不能创建对象

2、一个类实现多个接口,多个接口中有同样的静态方法不冲突。

3、一个类继承了父类,同时又实现了接口,父类中和接口中有同名方法,默认用父类的。

4、一个类实现了多个接口,多个接口中存在同名的默认方法,不冲突,这个类重写该方法即可。 5、一个接口继承多个接口,是没有问题的,如果多个接口中存在规范冲突则不能多继承。

下面的代码就存在规范冲突,两个run的返回值不一样。

//interface AAA{
//    int run();
//}
//interface BBB{
//    void run();
//}
//
//interface CCC extends AAA, BBB{
//}

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

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

相关文章

svn介绍 4.0

一、svn介绍(版本控制工具) 1、svn的定义: svn是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式个管…

电脑数据丢失是什么原因 易我数据恢复软件下载 easyrecovery数据恢复软件下载 电脑数据删除了怎么恢复 电脑数据库损坏了怎么找回

目录 一、电脑数据丢失是什么原因 二、电脑数据丢失如何恢复 三、EasyRecovery恢复电脑数据的方法介绍 电脑是我们大家熟悉并且常用的数据存储设备,也是综合性非常强的数据处理设备。对于电脑设备来讲,最主要的数据存储介质是硬盘,电脑硬…

CMU15445实验总结(Spring 2023)

CMU15445实验总结(Spring 2023) 背景 菜鸟博主是2024届毕业生,学历背景太差,导致23年秋招无果,准备奋战春招。此前有读过LevelDB源码的经历,对数据库的了解也仅限于LevelDB。奔着”有对比才能学的深“的理念,以及缓解…

linux系统Jenkins工具配置webhook自动部署

Jenkins工具webhook自动部署 webhook自动部署webhook的意义操作流程jenkins页面操作gitlab页面操作 webhook自动部署 webhook的意义 自动化部署:Webhook 可以在代码提交、合并请求或其他特定事件发生时自动触发 Jenkins 构建和部署任务,从而实现自动化…

C#,K中心问题(K-centers Problem)的算法与源代码

1 K中心问题(K-centers Problem) k-centers problem: 寻找k个半径越小越好的center以覆盖所有的点。 比如:给定n个城市和每对城市之间的距离,选择k个城市放置仓库(或ATM或云服务器),以使城市…

【前端素材】推荐优质后台管理系统网页Highdmin平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理和控制网站、应用程序或系统的管理界面。它通常被设计用来让网站或应用程序的管理员或运营人员管理内容、用户、数据以及其他相关功能。后台管理系统是一种用于管理网站、应用程序或系统的工具,通常由管理员使…

express+mysql+vue,从零搭建一个商城管理系统7--文件上传,大文件分片上传

提示:学习express,搭建管理系统 文章目录 前言一、安装multer,fs-extra二、新建config/upload.js三、新建routes/upload.js四、修改routes下的index.js五、修改index.js六、新建上传文件test.html七、开启jwt验证token,通过login接…

Vue.js+SpringBoot开发开放实验室管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实验管理模块2.4 实验设备模块2.5 实验订单模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示五、样例代码5.1 查询实验室设备5.2 实验放号5.3 实验预定 六、免责说明 一、摘…

vue3的router

需求 路由组件一般放在&#xff0c;pages或views文件夹, 一般组件通常放在component文件夹 路由的2中写法 子路由 其实就是在News组件里面&#xff0c;再定义一个router-view组件 他的子组件&#xff0c;机会渲染在router-view区域 路由传参 <RouterLink :to"/news…

解决导入项目后在idea中不显示的问题

问题&#xff1a; 今天下午重新打开寒假之前负责的项目&#xff0c;发现打不开了&#xff0c; 从master拉取最新代码到我的分支&#xff0c;发现我的分支上显示就是这样子&#xff0c;无论怎么更新代码都不行。 原因&#xff1a; 在上一次上传代码的时候&#xff0c;我把我分…

leetcode括号生成

题目描述 解题思路 首先看到题目&#xff0c;一开始是并没有思路的。这时候可以在纸上进行演算一下结果。当只有一对括号的时候&#xff0c;我们可以得知结果[“()”],当有两对括号的时候&#xff0c;我们可以发现&#xff0c;括号在第一个基础上&#xff0c;要么在括号内部出…

静态时序分析:SDC约束命令set_case_analysis详解

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 目录 指定值 指定端口/引脚列表 简单使用 set_case_analysis命令用于对电路进行特定模式的设定&#xff0c;例如对于一个工作在正常模式下的芯片&#xff0c;…

HTML5新特性:为Web带来的翻天覆地变化

随着互联网的发展&#xff0c;HTML5作为Web开发的重要里程碑&#xff0c;为我们带来了一系列令人兴奋的新特性和功能。本文将带领大家探索HTML5的新特性&#xff0c;揭示其对Web技术的巨大影响。 一、介绍 HTML5作为HTML的最新版本&#xff0c;不仅强化了网页结构与内容&#…

reach功能的使用

1.reach添加后 1.reach添加后2 2.拷贝reach最后一帧的动作 3.删除reach(注意画选时如果reach延长不能直接删否则以前的动画也会删掉&#xff0c;要缩短reach后再删另外这两个灰原点也要删掉否则影响后边新加clip的对齐会出现乱七八糟的事情) 4.删除reach后&#xff0c;光标移到…

收藏:数据防泄漏系统推荐,数据防泄漏系统有哪些?

一金融机构在近期发生了一起数据泄露事件。 经过调查&#xff0c;发现是由于一名员工将包含客户敏感信息的文件通过电子邮件发送给了未经授权的第三方。 这一事件导致客户数据泄露&#xff0c;给该机构带来了严重的声誉损失和信任危机。 这一案例凸显了数据防泄漏系统的重要性…

Neo4j aura 官方网站快速入门新手教精读-从官方教程学习知识图谱

Neo4j 官方网站快速入门新手教精读 本文旨在为Neo4j新手提供一份全面的入门指南。除了基础的文本解释&#xff0c;我在里面还插入了每一步骤的详细截图或者自己画的图&#xff0c;从官方了解知识肯定比自己乱看要权威一些&#xff0c;有看不懂的不要纠结了解大概意思即可&#…

Java中心校智慧校园智慧班牌物联网平台源码

目录 智慧班牌 班牌首页 班级信息 课表信息 视频 图片 进离校管理 人脸登录页 学生个人中心 请假管理 成绩管理 家长留言 学生绑卡 学生评价 系统设置 通知管理 值日管理 倒计时 班级德育 班牌模式 1.课堂授课模式 2.家长会签到模式 3.考场模式 4.班级…

React富文本编辑器开发(一)

这是一个系统的完整的教程&#xff0c;每一节文章的内容都很重要。这个教程学完后自己可以开发出一个相当完美的富文本编辑器了。下面就开始我们今天的内容&#xff1a; 安装 是的&#xff0c;我们的开发是基于Slate的开发基础&#xff0c;所以要安装它&#xff1a; yarn ad…

【贪心算法】Leetcode 122. 买卖股票的最佳时机 II

【贪心算法】Leetcode 122. 买卖股票的最佳时机 II 122. 买卖股票的最佳时机 II贪心算法&#xff1a;整体利润拆为每天的利润&#xff0c;只收集每天的正利润 122. 买卖股票的最佳时机 II ---------------&#x1f388;&#x1f388;122. 买卖股票的最佳时机 II 题目链接&…

【Excel PDF 系列】EasyExcel + iText 库实现 Excel 转换 PDF

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 如果您有疑问或者见解&#xff0c;欢迎指教&#xff1a; 企鹅&#xff1a;869192208 文章目录 前言转换前后效果引入 pom 配置代码实现定义 ExcelDataVo 对象主方法EasyExcel 监听器 前言 最近遇到生成 …