Java基础之接口(interface)详解

对Java核心技术卷的一个简单笔记

目录

  • 前言
    • 1.接口的概念
    • 2.接口的声明格式
    • 3.接口的属性
    • 4.接口和抽象类的区别
    • 5.继承和接口混合使用的一些规则
    • 6.继承父类和实现接口时的一些同名冲突问题
      • 6.1方法名冲突
      • 6 .2常量名冲突


前言

总结一下基础阶段接口常见的问题

1.接口的概念

接口 ,由于Java没有多继承,只有单继承,那么需要多个类同时满足一些需求的时候怎么办呢。这就是接口的设计意义,它是希望符合这个接口的类满足的一些需求。可以看作是一种规范。

public interface Comparable {}

2.接口的声明格式

[修饰符] interface 接口名{// 公共的静态常量// 公共的抽象方法// 公共的默认方法(JDK1.8 以上)// 公共的静态方法(JDK1.8 以上)// 私有方法(JDK1.9 以上)
}

为什么Java8以后允许公共的静态方法,和默认方法呢

静态方法
因为之前的标准类库设计中,有很多 Collection/Colletions 或者Path/Paths 这样成对的接口和类,后面的类中都是静态方法,而这些静态方法都是为前面的接口服务的,那么这样设计一对 API,不如把静态方法直接定义到接口中使用和维护更方便。
默认方法
(1)我们要在已有的老版接口中提供新方法时,如果添加抽象方法,就会涉及到原来使用这些接口的类就会有问题,那么为了保持与旧版本代码的兼容性,只能允许在接口中定义默认方法实现。比如:Java8 中对Collection、List、Comparator 等接口提供了丰富的默认方法。
(2)当我们接口的某个抽象方法,在很多实现类中的实现代码是一样的,此时将这个抽象方法设计为默认方法更为合适,那么实现类就可以选择重写,也可以选择不重写。
Tips:Java9可以用私有方法
使用的的很有限,因为private导致只能在几口本身的方法中使用,用途有限,更多是最为接口中其他方法的辅助方法

3.接口的属性

(1)接口不是类。不可以用new实例化接口
(2)可以声明接口,用实现了接口的类来实现
(3)可以用instanceof‘判断对象是都属于哪个接口
(4)接口中所有的方法被设置为public,所有变量总是默认为public static final

4.接口和抽象类的区别

接口(interface)和抽象类最大的区别是多继承和单继承的问题导致的。引入接口的原因也是因为Java是单继承语言,抽象类有着和接口类似的功能,但是限制于单继承。一个类只能继承一个抽象类但是却可以实现多个接口,这就是接口类似于多继承功能的优势。一般来说能设计成接口尽量设计成接口。抽象类和接口还有一些具体的不同。接口可以继承大多数多继承的优势,同时避免多继承的复杂性和低效性。
在这里插入图片描述

5.继承和接口混合使用的一些规则

(1)接口可以继承多个接口,关键字是extends,
(2)可以同时继承父类和实现接口,继承关键字在前,实现关键字在后
(3)接口与实现类对象构成多态引用,实现类实现接口,类似于子类继承父类.因此,接口类型的变量与实现类的对象之间,也可以构成多态引用。通过接口类型的变量调用方法,最终执行的是你 new 的实现类对象实现的方法体。(4)接口不能直接创建对象,但是可以通过接口名直接调用接口的静态方法和静态常量(5)对于接口的静态方法,直接使用“接口名.”进行调用即可也只能使用“接口名."进行调用,不能通过实现类的对象进行调用对于接口的抽象方法、默认方法,只能通过实现类对象才可以调用接口不能直接创建对象,只能创建实现类的对象
(1) interface A extends 接口1,接口2 {
}2class B extends C implements 接口1,接口2 {
}3)不粘贴具体代码,比较长,自己可以下去谢谢(4)接口.静态方法名()接口.静态变量

6.继承父类和实现接口时的一些同名冲突问题

我们思考一下这个问题,一个类同时可以继承一个父类和实现多个接口。那么,冲突主要来自如下几种情况:

  • 父类和接口之间同名冲突
  • 实现的多个接口之间的同名冲突
    那么来看看怎么解决吧,分为方法名冲突和变量名冲突

6.1方法名冲突

(1)对于父类和接口之间的同名冲突
遵守的是类优先原则,当一个类,既继承一个父类,又实现若干个接口时,父类中的成员方法与接口中的抽象方法重名,子类就近选择执行父类的成员方。

(2)实现的多个接口之间的同名冲突。
当一个类同时实现了多个父接口,而多个父接口中包含方法签名相同的默认方法时,怎么办呢?

  • 声明接口:选择保留其中一个,通过“接口名.super.方法名"的方法选择保留哪个接口的默认方法。

当一个子接口同时继承了多个接口,而多个父接口中包含方法签名相同的默认方法时,怎么办呢?

  • 子接口重写默认方法
  • 子接口重写默认方法时,default关键字可以保留。
  • 子类重写默认方法时,default关键字不可以保留。

6 .2常量名冲突

(1)当子类继承父类又实现父接口,而父类中存在与父接口常量同名的成员变量,并且该成员变量名在子类中仍然可见。
通过“接口名.变量名"的方法引用父接口的成员变量

(2)当子类同时实现多个接口,而多个接口存在相同同名常量。
此时在子类中想要引用父类或父接口的同名的常量或成员变量时,就会有冲突问题。

通过“super.变量名"的方法引用父类的成员变量

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

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

相关文章

F. Minimum Maximum Distance Codeforces Round 903 (Div. 3)

Problem - F - Codeforces 题目大意&#xff1a;有一棵n个点的树&#xff0c;其中有k个标记点&#xff0c;令点i到所有标记点的最远距离为fi&#xff0c;问所有点中fi的最小值是多少 1<k<n<2e5 思路&#xff1a;我们首先考虑取得最小值的点在哪&#xff0c;我们假设…

Unity教程 ECS 内存分配器原理详解

一、UnityECS内存分配器的作用 在传统的面向对象编程模式中&#xff0c;我们通常使用堆内存来存储实体和组件数据。然而&#xff0c;由于实体和组件数据的规模通常非常庞大&#xff0c;使用堆内存进行分配和管理会导致内存碎片化和性能下降的问题。为了解决这个问题&#xff0…

常见的数据结构及应用

文章目录 前言数据结构介绍数组链表队列和栈树堆 总结 前言 数据结构是计算机存储、组织数据的方式。在工作中&#xff0c;我们通常会直接使用已经封装好的集合API&#xff0c;这样可以更高效地完成任务。但是作为一名程序员&#xff0c;掌握数据结构是非常重要的&#xff0c;…

MySQL——六、库表操作(下篇)

MySQL 一、INSERT语句二、REPLACE语句三、UPDATE语句四、delete和TRUNCATE语句五、MySQL用户授权1、密码策略2、用户授权和撤销授权 一、INSERT语句 #在表里面插入数据&#xff1a;默认情况下&#xff0c;一次插入操作只插入一行 方式1&#xff1a; INSERT [INTO] 表名 [(colu…

新一代开源语音库CoQui TTS冲到了GitHub 20.5k Star

Coqui TTS 项目介绍 Coqui 文本转语音&#xff08;Text-to-Speech&#xff0c;TTS&#xff09;是新一代基于深度学习的低资源零样本文本转语音模型&#xff0c;具有合成多种语言语音的能力。该模型能够利用共同学习技术&#xff0c;从各语言的训练资料集转换知识&#xff0c;来…

vue2 解密图片地址(url)-使用blob文件-打开png格式图片

一、背景 开发中需要对加密文件进行解码&#xff0c;如图片等静态资源。 根据后端给到的url地址&#xff0c;返回的是图片文件&#xff0c;但是乱码的&#xff0c;需要解码成png图片进行展示 二、请求接口 将后端返回的文件转为文件流&#xff0c;创建Blob对象来存储二进制…

设计模式:工厂方法模式(C#、JAVA、JavaScript、C++、Python、Go、PHP):

本节主要介绍设计模式中的工厂方法模式。 简介&#xff1a; 工厂方法模式&#xff0c;它是对简单工厂模式的进一步抽象化&#xff0c;其好处是可以使系统在不修改原来代码的情况下引进新的产品&#xff0c;即满足开闭原则。 它定义了一个用于创建对象的工厂接口&#xff0c;让…

游游的字母串 (环形数组两点之间的位置)

题目链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 题目&#xff1a; 样例&#xff1a; 输入 yab 输出 3 思路&#xff1a; 暴力枚举&#xff0c;全部变成对应的26个字母字符需要的操作步数&#xff0c;取最少的一个操作步数&#xff0c; 这里的操作步数&#xff0…

laravel中锁以及事务的简单使用

一、首先来说一下什么是共享锁&#xff1f;什么是排他锁&#xff1f; 共享&#xff1a;我可以读 写 加锁 , 别人可以 读 加锁。 排他&#xff1a;只有我 才 可以 读 写 加锁 , 也就是说&#xff0c;必须要等我提交事务&#xff0c;其他的才可以操作。 二、简单例子实现加锁 锁…

tomcat 服务器

tomcat 服务器 tomcat: 是一个开源的web应用服务器。区别nginx&#xff0c;nginx主要处理静态页面&#xff0c;那么动态请求&#xff08;连接数据库&#xff0c;动态页面&#xff09;并不是nginx的长处&#xff0c;动态的请求会交给tomcat进行处理。 nginx-----转发动态请求-…

PCL 坡度滤波算法地面分割(C++详细过程版)

目录 一、算法原理1、实现流程2、参考文献二、代码实现三、结果展示一、算法原理 1、实现流程 1、格网示意图 2、计算格网行列数 公式中的特殊符号为向上取整,

Cesium Vue(三)— 相机配置

1. 坐标系转换 1.1 cesium使用到的坐标系 屏幕坐标系&#xff0c;二维的笛卡尔坐标系&#xff0c;API > Cartesian2地理空间坐标系&#xff0c;WGS-84坐标系&#xff0c; API > Cartographic(经度&#xff0c;维度&#xff0c;高度)三维笛卡尔空间直角坐标系&#xff0…

GPT4 Advanced data analysis Code Interpreter 做行业数据分析、可视化处理图像、视频、音频等

1. 跨境电商如何用ChatGPT选品 ChatGPT Jungle scout 案例&#xff1a;跨境电商如何用ChatGFT选品 ChatGPTJungle scout 素材和资料来自&#xff1a; Jungle ScoutEM, Michael Soltis 和 文韬武韬AIGC 1.1 从Jungle scout上下载数据 Date Range > Last 90 days Downlo…

python+大数据校园卡数据分析 计算机竞赛

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于yolov5的深度学习车牌识别系统实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;4分工作量&#xff1a;4分创新点&#xff1a;3分 该项目较为新颖&am…

Stable Diffusion绘画,卡通,教室

1 girl, parted lips, blush, makeup, light smile, school uniform, classroom, light rays, glow, thighs, collarbone, narrow waist, (masterpiece), wallpaper 1个女孩&#xff0c;双唇&#xff0c;腮红&#xff0c;化妆&#xff0c;浅笑&#xff0c;校服&#xff0c;教室…

基于SSM框架的安全教育平台

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

【Eclipse】设置自动提示

前言&#xff1a; eclipse默认有个快捷键&#xff1a;alt /就可以弹出自动提示&#xff0c;但是这样也太麻烦啦&#xff01;每次都需要手动按这个快捷键&#xff0c;下面给大家介绍的是&#xff1a;如何设置敲的过程中就会出现自动提示的教程&#xff01; 先按路线找到需要的页…

uniapp使用uQRCode绘制二维码,下载到本地,调起微信扫一扫二维码核销

1.效果 2.在utils文件夹下创建uqrcode.js // uqrcode.js //--------------------------------------------------------------------- // github https://github.com/Sansnn/uQRCode //---------------------------------------------------------------------let uQRCode {…

设计模式(1)-设计模式前置基础知识

1&#xff0c;设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中&#xff0c;而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫亚历山大&#xff08;Christopher Alexand…

PS 学习笔记

书籍&#xff1a;Photoshop 2022从入门到精通-敬伟-微信读书 1. PS 常用快捷键 复位右侧基本工作栏&#xff1a;【窗口】-【工作区】- 【复位基本功能】 Ctrl 鼠标滚轮&#xff1a;主界面图片左右滚动Shift 鼠标滚轮&#xff1a;主界面图片上下滚动Alt 鼠标滚轮&#xff1…