接口的理解

news2024/9/28 17:25:48

文章目录

  • 一、接口
    • 匿名实现类、匿名对象
    • 练习1
    • 练习2
    • JDK8接口的新特性

一、接口

1、接口使用interface定义
2、Java中接口和类是并列结构
3、如何定义接口——定义接口中的成员
JDK7之前:只能定义全局常量和抽象方法
全局常量:public static final的(这里的意思是这三个词一起定义的后面的内容),但是书写时可以省略不写
抽象方法:public abstract的
在这里插入图片描述

JDK8:除了定义全局常量和抽象方法外,还可以定义静态方法和默认方法
4、接口中不能定义构造器!意味着接口不可以实例化
5、Java开发中,接口通过让类去实现(implements)的方式来使用
如果实现类覆盖了接口中所有的抽象方法,则此实现类就可实例化。
如果实现类没有覆盖了接口中所有的抽象方法,则此实现类仍未抽象类。
在这里插入图片描述
6、Java类可以实现多个接口,弥补了单继承性的局限性
格式: class A extends B implements C,D,E
7、接口与接口之间可以继承,而且可以多继承
格式:interface A extends B,C
8、接口具体的使用,体现多态性
本来com.transferData()中应该写的是com.transferData(Usb usb),但是Usb是个接口,不能进行实例化,所以需要使用多态,也就是定义一个实现类,具体步骤如图。如果写成com.transferData(new Flash()),也和这个写法是相同的。
在这里插入图片描述

9、接口,实际上可以看成一种规范

匿名实现类、匿名对象

在这里插入图片描述
在这里插入图片描述

练习1

在这里插入图片描述
答案
在这里插入图片描述

练习2

在这里插入图片描述
1、class Ball中有一个play方法,是对Playable、Bounceable两个接口中play方法的重写,但是两个方法都有play方法,这里是将重写看成对两个接口中的方法都进行了重写
2、在class Ball中的play方法第一行有个ball=new Ball,说明ball这个变量已经声明过了,是因为Ball实现了Rollable这个接口,所以实现了其中的语句。
3、但是在Rollable这个接口中的Ball ball前面省略了public static final,也就是ball其实是一个常量,所以在class Ball中的play方法不能再给ball new一个新的了。

JDK8接口的新特性

1、接口中定义的静态方法,只能通过接口调用
在这里插入图片描述
在这里插入图片描述
2、通过实现类的对象,可以调用接口中的默认方法
如果实现类中重写了接口中的方法,那么调用时调用的是重写后的方法。
在这里插入图片描述
3、类优先原则:如果实现类继承的父类和实现的接口中声明了同名同参数的方法,那么实现类在没有重复发的前提下,默认调用的是父类中的方法。
4、接口冲突:如果实现类实现了多个接口,而多个接口中定义了同名同参数的默认方法,那么在实现类没有重写该方法的情况下,会报错。
此时必须在实现类中重写方法。
在这里插入图片描述

在这里插入图片描述
5、如何在实现类中调用父类或接口中被重写的方法
在这里插入图片描述

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

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

相关文章

力扣 2042. 检查句子中的数字是否递增

题目 句子是由若干 token 组成的一个列表,token 间用 单个 空格分隔,句子没有前导或尾随空格。每个 token 要么是一个由数字 0-9 组成的不含前导零的 正整数 ,要么是一个由小写英文字母组成的 单词 。 示例,“a puppy has 2 eye…

【MySQL】-【索引】

目录为什么使用索引InnoDB中索引的推演索引前的查找设计索引简单的索引设计方案InnoDB中的索引方案为什么使用索引 一、hashmap底层使用红黑树 二、索引时在存储引擎中实现的,因此不同存储引擎的索引可能不同 索引的优点: 类似大学图书馆建书目索引&am…

zookeeper看这一篇就够了

第一章 zookeeper简介 第1节 zookeeper的由来 1 2 3 41. zookeeper最早起源于雅虎研究院的一个研究小组 2. 在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,并且这个系统还有单点问题 3. 雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架…

GIS应用技巧之矢量数据编辑

挺多时候,需要对矢量数据进行编辑,那么如何编辑? 在ArcGIS中修改数据,首先要开始编辑,启动编辑工具条(Editor)。 目前编辑器处于灰色状态说明没有启动,那么还有些小伙伴可能在GIS主…

【项目实战】传智健康

🌟个人博客:www.hellocode.top🌟 🌟Java知识导航:Java-Navigate🌟 ⭐想获得更好的阅读体验请前往Java-Navigate 🔥本文专栏:《流行框架》 🌞如没有JavaWEB基础&#xff0…

Wireshark抓Telnet包及报文分析

Wireshark抓Telnet包及报文分析 Telnet作为应用层第二大协议,用途很多滴。 Telnet到底是个啥子 TELNET协议一种简单的基于文本的协议,它可以用来实现远程终端,让用户可以远程对服务器进行操作。尽管现在的远程终端基本上是基于 ssh 的了&am…

GO语言定时任务实战-gocron包

文章目录1. 基本使用1.1 初始化实例 new()1.2 添加定时任务 AddFunc()1.3 开始定时任务 Start()1.4 完整示例1.5 第一次执行定时任务的契机1.6 spec 的设置2. 粒度到秒2.1 语法示例2.2 完整示例3. 按时间间隔3.1 语法3.2 完整示例(every)3.3 完整示例引用…

AcWing 4721. 排队(单调栈+二分法)

问题描述 n 个小朋友排成一排,从左到右依次编号为 1∼n。 第 i 个小朋友的身高为 hi。 虽然队伍已经排好,但是小朋友们对此并不完全满意。 对于一个小朋友来说,如果存在其他小朋友身高比他更矮,却站在他右侧的情况&#xff0c…

【闲聊杂谈】纤程的概念

首先要明白几个概念:程序、进程、线程、纤程。 如果要非常严格的定义上来说的话,进程是操作系统用来做资源调度的基本单位。后来发现进程的切换是在的太费资源了,于是诞生了线程;线程多了来回切换还是很费资源,于是又…

[Linux]Linux项目自动化构建工具-make/Makefile

🥁作者: 华丞臧. 📕​​​​专栏:【LINUX】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站 文…

FX5U-相对定位指令DRVI(DDRVI )两种写法

该指令通过增量方式(采用相对地址的位置指定),进行1速定位。 以当前停止的位置作为起点,指定移动方向和移动量(相对地址)进行定位动作。如果驱动触点置为ON,则输出脉冲,并开始从偏置速度进行加速动作。到达指令速度后,以指令速度进…

【LeetCode】N皇后-回溯

N皇后-回溯N皇后题目示例分析代码N皇后II题目示例分析代码总结N皇后 题目 LeetCode 51.N皇后 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间…

第二篇 - Vue 的初始化流程

一,前言 上篇,使用 rollup 完成了 Vue2 源码环境的搭建 本篇,介绍 Vue 的初始化流程 二,Vue 简介 以两个概念性问题做简单介绍 1,问题:Vue 是 MVVM 框架吗? 在 Vue 官网上是这样说的&#…

LeetCode450之删除二叉搜索树中的节点(相关话题:二叉搜索树,删除)

题目描述 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤&#x…

VS封装C++项目以及属性配置

目录 1. 封装单个项目 1.1 封装 新建C空项目,将需要封装的源文件(eval.cpp)和 头文件(eval.h)复制过来,并对它们做如下修改: 注:如果有多个头文件和源文件,只对可供外部调用的文件及其内部的函数作下面的处理 分别…

1.c++环境配置及第一个环境运行

开发IDE与环境 最好是使用ubuntu系统进行开发,如果没有的话,基于windows使用vs code 进行ssh连接到远程的ubuntu主机进行开发也可以。开发的过程跟本地差不多。 vs code IDE 插件的安装 1.变成中文菜单与提示,安装MS-CEINTL.vscode-language-pack-zh-…

《MySQL系列-InnoDB引擎13》文件-参数文件

文件 MySQL数据和InnoDB存储引擎表中的各种类型的文件,这些文件如下: 参数文件:MySQL启动时的数据库文件,指定初始化参数,介绍各种参数类型,以及定义某种内存结构的大小等日志文件:用来记录My…

C语言日常练习

这里写目录标题循环结构输入两个正整数m和n,求其最大公约数和最小公倍数求Snaaaaaaaaaa……的值,其中a是一个数字,n表示a的个数,n和a都由键盘输入一维数组从键盘输入十个数,并将正着输出反着输出从键盘输入十个数&…

虹科案例 | 解决ASRS系统的痛点问题居然这么简单?(上)

摘要 ASRS(自动存储和检索系统)在内部物流领域变得越来越常见。内部物流包括优化、整合、自动化和管理履行或配送中心内的货物物流流动。 ASRS穿梭机经常用在具有多个存储级别的配送中心的仓库或库存集装箱中处理散装产品的托盘。 自动化存储和检索系统的定义是专门为物料的存…

springcloud-02-微服务间通信及熔断组件

第二章 微服务间通信及熔断组件 1. 微服务间通信组件 1.1 基于RestTemplate的服务调用 Spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只…