Java复习-20-接口(1)

news2024/7/6 19:11:37

接口的定义及使用

如果相对外部隐藏全部的实现细节,就要通过接口来实现。

接口的定义

使用interface关键字来定义。由于接口描述的是一个公共的定义标准,所以在接口之中所有的抽象方法的访问权限都为public

interface IMessage{ // 为了区分接口,接口名称前要加大写字母 I
    public static final String INFO = "HelloWorld"; // 全局常量
    public abstract String getInfo(); // 抽象方法
}

接口的实现

  • 接口需要被子类是按(implements),一个子类可以实现多个父接口;
  • 子类(如果不是抽象类)那么一定要覆写接口之中的全部抽象方法;
  • 接口对象可以利用子类对象的向上转型进行实例化。
class MessageImpl implements IMessage {
    public String getInfo(){
        return "得到一个消息。";
    }
}

多接口实现

在java中的主要目的是:一个子类可以实现多个接口(多继承)

interface IMessage{ // 为了区分接口,接口名称前要加大写字母 I
    public static final String INFO = "HelloWorld"; // 全局常量
    public abstract String getInfo(); // 抽象方法
}
interface IChannel {
    public abstract boolean connect();
}
class MessageImpl implements IMessage,IChannel {
    public String getInfo(){
        return "得到一个消息。";
    }
    public boolean connect() {
        System.out.println("消息发送通道已建立。");
    }
}

接口与接口,接口与Object的关系

实现了两个接口的子类,其实例化对象,可以向上转型为两个接口对象。

接口的多继承

interface IService extends IMessage,IChannel {
    public String service();
}

实际开发

实际开发中,接口的使用有三种形式:

  • 进行标准设置
  • 表示一种操作的能力
  • 暴露远程方法视图,这个一般都在RPC分布式开发中使用。

接口定义加强

假如当接口下的子类都需要新增 某一个相同的方法时,此时若子类数量很多,会造成代码修改成本增大。
对于该种情况,正确的方式是:子类在不应该直接实现该接口,而是中级使用一个抽象类进行过渡,由此便可以在抽象类中定义这样一个相同的普通方法了。
在这里插入图片描述

虽然在JDK的后续版本中支持了直接在接口中定义普通方法,甚至是static方法,但是其不应该作为接口的主要设计原则。
我们所写的代码中依然应该奉行:接口就是抽象方法的集合

使用接口定义标准

对于接口而言在开发之中最为重要的应用就是进行标准的制定
例如:电脑的USB口,就接收符合USB标准的输入,而不关心USB的外设是键盘、鼠标、打印机…

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

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

相关文章

一步一步分析将数据响应式实现出来

写在前面 vue2 的数据响应式已经非常成熟且过时了,但是相信很多人还是对原理的东西一知半解,甚至还是不知道他究竟是怎么实现的,今天我们就试着一步一步分析看看响应式需要解决哪些问题,具体的问题难点是什么? 数据响应…

【计算机组成 课程笔记】5.1 处理器的设计步骤

课程链接: 计算机组成_北京大学_中国大学MOOC(慕课) 5 - 1 - 501-处理器的设计步骤(14-49--)_哔哩哔哩_bilibili 处理器,或者说是CPU,是现代计算机中最为复杂的一个部件。不过先不要劝退,要设计一个简单但是…

1343. 大小为 K 且平均值大于等于阈值的子数组数目

1343. 大小为 K 且平均值大于等于阈值的子数组数目 C代码&#xff1a;滑动窗口 // 窗口长度固定、返回窗口平均值>threshold的窗口个数int numOfSubarrays(int* arr, int arrSize, int k, int threshold){int cnt 0;int l 0;int sum 0;for (int r 0; r < arrSize; r…

轻松制作玩具小程序商城

随着移动互联网的快速发展&#xff0c;小程序成为了各行各业的新宠儿。想要快速搭建一个属于自己的小程序商城吗&#xff1f;乔拓云平台将为你提供最简单的解决方案。下面就跟随我的步骤&#xff0c;一起来学习如何搭建一个玩具小程序商城吧&#xff01; 首先&#xff0c;我们需…

微机原理与技术(2)8086微处理器

8086微处理器 考点介绍功能和介绍后续会继续更新&#xff0c;点赞follow me继续学习 考点介绍 考点一: 掌握8086/8088CPU的功能构成及流水线技术&#xff0c;理解流水线管理规则。2.1 8086/8088 CPU的功能构成2.2 8086/8088CPU的流水线技术考点二:掌握8086/8088CPU寄存器的组成…

论文阅读_大模型_ToolLLM

英文名称: ToolLLM: Facilitating Large Language Models to Master 16000 Real-world APIs 中文名称: TOOLLLM&#xff1a;帮助大语言模型掌握16000多个真实世界的API 文章: http://arxiv.org/abs/2307.16789 代码: https://github.com/OpenBMB/ToolBench 作者: Yujia Qin 日期…

第66步 时间序列建模实战:ARIMA建模(SPSS)

基于WIN10的64位系统演示 一、写在前面 从这一期&#xff0c;我们使用SPSS进行SARIMA模型的构建。 同样&#xff0c;使用某省2005年1月至2016年12月AIDS死亡率的时间序列数据。 二、SPSS建立SARIMA实战 &#xff08;1&#xff09;录入数据和格式调整 双击打开IBM SPSS Sta…

Android 在TextView前面添加多个任意View且不影响换行

实现效果如下&#xff1a; 如上&#xff0c;将头像后面的东西看作一个整体&#xff0c;因为不能影响后面内容的换行&#xff0c;且前面控件的长度是可变的&#xff0c;所以采用自定义View的方法来实现&#xff1a; /*** CSDN深海呐 https://blog.csdn.net/qq_40945489/articl…

通俗易懂讲解大模型:Tokenizer

Tokenizer Tokenizer 是 NLP pipeline 的核心组件之一。Tokenizer 的目标是&#xff1a;将文本转换为模型可以处理的数据。模型只能处理数字&#xff0c;因此 Tokenizer 需要将文本输入转换为数字输入。 通常而言有三种类型的 Tokenizer &#xff1a;Word-based Tokenizer、Cha…

【漏洞复现】广联达办公OAsql+文件上传+弱口令

漏洞描述 广联达办公OA是一款综合办公自动化解决方案,旨在提高组织内部的工作效率和协作能力。它提供了一系列功能和工具,帮助企业管理和处理日常办公任务、流程和文档。默认弱口令admin password,后面就不提了。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当…

Unity 引擎中国版 “团结引擎” 发布

导读Unity 官方宣布&#xff0c;Unity 中国正式推出 Unity 中国版引擎 —— 团结引擎&#xff0c;同时也开启了 Unity 中国本土化进程的全新篇章。作为推动团结引擎落地的核心人物&#xff0c;Unity 中国 CEO 张俊波称致力于将其打造为一款更懂中国开发者的引擎。 团结引擎以 U…

JavaScript基础06——let和var两个关键字有啥不同

哈喽&#xff0c;小伙伴们大家好&#xff0c;我是雷工&#xff01; 每日学习一点点&#xff0c;今天继续学习JavaScript基础知识&#xff0c;下面是学习笔记。 1、变量的本质 内存&#xff1a;计算机中存储数据的地方&#xff0c;相当于一空间。 变量的本质&#xff1a;是程序…

论文阅读:SERE: Exploring Feature Self-relation for Self-supervised Transformer

Related Work Self-supervised 学习目的是在无人工标注的情况下通过自定制的任务&#xff08;hand-crafted pretext tasks&#xff09;学习丰富的表示。 Abstract 使用自监督学习为卷积网络&#xff08;CNN&#xff09;学习表示已经被验证对视觉任务有效。作为CNN的一种替代…

poll epoll初学习

正是select这些缺点&#xff0c;才有了poll 1.I/O多路转接之poll 2.I/O多路转接之epoll 其中的struct epoll_event:

[计算机入门] 项目的压缩与解压缩

3.6 项目的压缩与解压缩 有几个原因使得我们要将文件压缩打包&#xff1a; 节省存储空间&#xff1a;压缩文件能够减小文件的体积&#xff0c;从而节省存储空间。尤其是对于多个大型文件或文件夹进行打包压缩时&#xff0c;可以显著降低所需的存储容量。方便传输&#xff1a;…

gRpc入门

gRpc 一、简介 1、gprc概念 gRpc是有google开源的一个高性能的pc框架&#xff0c;Stubby google内部的rpc,2015年正式开源&#xff0c;云原生时代一个RPC标准。 tips:异构系统&#xff0c;就是不同编程语言的系统。 2、grpc核心设计思路 grpc核心设计思路1. 网络通信 --&g…

C++ string

目录 string类介绍访问&#xff1a;[ ] 遍历迭代器遍历范围for遍历 容量相关&#xff1a;修改相关&#xff1a;编码表的了解写时拷贝的了解string的模拟 STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&a…

【Linux】高级IO --- 多路转接,select,poll,epoll

所有通过捷径所获取的快乐&#xff0c;无论是金钱、性还是名望&#xff0c;最终都会给自己带来痛苦 文章目录 一、五种IO模型1.什么是高效的IO&#xff1f;&#xff08;降低等待的时间比重&#xff09;2.有哪些IO模型&#xff1f;哪些模型是高效的&#xff1f;3.五种IO模型的特…

【韩顺平 零基础30天学会Java】面向对象编程(基础)(5days)

面向对象编程 Java设计者引入类与对象&#xff08;OOP&#xff09;&#xff0c;根本原因就是现有的技术&#xff0c;不能完美的解决新的需求。 对象主要是由属性和行为构成的。 类就是数据类型&#xff08;比如Cat&#xff09;&#xff0c;对象就是具体的实例。 //定义一个猫…

QT转型Visual Studio(qmake项目到cmake项目的移植)

前言 由于工作需要&#xff0c;同时也为了方便以后的集成升级&#xff0c;希望将之前用Qt creator qmake开发的项目移植到cmake项目中&#xff0c;并使用Visual Studio 进行后续开发&#xff0c;本文主要用以记录该过程中的常规步骤和遇到的特殊情况。 qmake项目 在一开始&a…