对java的interface的理解

news2024/9/28 13:24:48

一个例子来让我们理解更加深刻

这是我们的整体文件布局

①A是接口

②B和C是用来实现接口的类

③show是我们的运行函数,用来展示


A接口

接口中定义的方法可以不用去实现,用其他类去实现(必须实现)  

关键字:interface 

public interface A {
//    public static final String str = "我是A接口";  可简写为下面 理解为一个常量
    String str = "我是A接口";
//    public abstract void doa(); 可简写为下面
    void doa();
}

B类(用来实现A接口)

关键字:implements 

public class B implements A{
    @Override
    public void doa() {
        System.out.println("我是B类");
    }
}

C类(用来实现A接口)

关键字:implements 

public class C implements A{
    @Override
    public void doa() {
        System.out.println("我是C类");
    }
}

定义完成后我们用我们的show来展示一些

show类

这里我们用了B类来实现我们的接口,因此调用显示为“我是B类”

public class show {
    public static void main(String[] args) {
        A a = new B();
        a.doa();
    }
}

我们把B改成C试试

public class show {
    public static void main(String[] args) {
        A a = new C();
        a.doa();
    }
}

显示的我是C类

所以我们就可以很方便的调用两个不同的方案来实现我们的功能,很方便

扩展

我们还可以在里面定义好函数,不用再去实现类中实现它(!!!注意和之前的区别,之前的不同,之前的是在实现类中必须实现)

     /**
     * 1、默认方法:必须使用default修饰,默认会被public修饰
     * 实例方法:对象的方法,必须使用实现类的对象来访问。
     */
default void test1(){
        System.out.println("===默认方法==");
        test2();
    }

    /**
     * 2、私有方法:必须使用private修饰。
     *   实例方法:对象的方法。
     */
    private void test2(){
        System.out.println("===私有方法==");
    }

    /**
     * 3、静态方法:必须使用static修饰,默认会被public修饰
     */
     static void test3(){
        System.out.println("==静态方法==");
     }

接口可以继承多个

interface A{
    void test1();
}
interface B{
    void test2();
}
interface C{}

//比如:D接口继承C、B、A
interface D extends C, B, A{

}

但是实现的时候也必须全部实现

//E类在实现D接口时,必须重写D接口、以及其父类中的所有抽象方法。
class E implements D{
    @Override
    public void test1() {

    }

    @Override
    public void test2() {

    }
}

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

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

相关文章

Redis分布式锁存在的问题及解决方案(值得珍藏)

Redis分布式锁存在的问题 在购票软件的情境中,当仅剩一张或几张票时,众多用户同时尝试购买。在不考虑任何外部干扰的情况下,逻辑上,系统应首先检查是否还有余票。如果仍有余票,用户可以顺利购买并导致库存相应减少&am…

鸿蒙next开发-OpenHarmony的NDK开发

Native API(NDK)入门 Native API是OpenHarmony SDK上提供的一组native开发接口与工具集合(也称为NDK),方便开发者使用C或者C语言实现应用的关键功能。Native API只覆盖了OHOS基础的一些底层能力,如libc&am…

史上最全EasyExcel

一、EasyExcel介绍 1、数据导入:减轻录入工作量 2、数据导出:统计信息归档 3、数据传输:异构系统之间数据传输 二、EasyExcel特点 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内…

制作一个Python聊天机器人

我们学习一下如何使用 ChatterBot 库在 Python 中创建聊天机器人,该库实现了各种机器学习算法来生成响应对话,还是挺不错的 什么是聊天机器人 聊天机器人也称为聊天机器人、机器人、人工代理等,基本上是由人工智能驱动的软件程序&#xff0…

代码随想录训练营第三十天|332.重新安排行程51. N皇后37. 解数独

332.重新安排行程 采用哈希表方式进行储存出发点和到达点,终止条件是result中的机场数量为机票1; 重点在于哈希表的运用和遍历方法 51. N皇后 wtf? 回溯算法非常形象的N叉树解法: 输入n,row col,chessboard 终止条件&#x…

2024年pmp的考试时间是什么时候?

2024最新考试时间已经出来了:分别是 3月、6月、8月、11月,四次,具体考试日期还需要关注官网的进一步通知。 一、PMP报考条件 年龄满足 22 周岁有官方授权的培训机构给的 35个PDU(学时) 就能报名。 是不是相当于没有…

[Python] 如何通过ctypes库来调用C++ 动态库 DLL?

ctypes库介绍 ctypes是Python的一个外部库,它提供了一种灵活的方式来调用C语言的动态链接库(DLL)或共享库(SO)。通过ctypes,我们可以在Python中直接调用C语言编写的函数和变量,从而实现跨语言的互操作。 ctypes 它提供了与 C 兼容的数据类型,并允许调用 DLL 或共享库中的…

本地MinIO存储服务通过Java程序结合Cpolar内网穿透进行远程连接

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 前言 MinIO是一款高性能、分布式的对象存储系统,它可以100%的运行在标准硬件上,即X86等…

【Linux系列】在Pop!OS的启动器中添加自定义程序图标

文章目录 前言一、创建快捷方式二、快捷方式参数三、添加右键菜单和注册MIME 前言 无论是在Windows上,还是Linux,或者安卓这些我们常用的操作系统上,一些应用程序的快捷方式放在桌面或者启动器,只需要简单的点击就可以启动&#…

【算法】串联所有单词的子串【滑动窗口】

题目 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。例如,如果 words ["ab","cd","ef"], 那么 "abcd…

Unity 编辑器篇|(十一)Gizmos (全面总结 | 建议收藏)

目录 1. 前言2 参数总览3 Gizmos绘制3.1 立方体:DrawCube3.2 视锥:DrawFrustum3.3 贴图:DrawGUITexture3.4 图标:DrawIcon3.5 线段:DrawLine3.6 网格:DrawMesh3.7 射线:DrawRay3.8 球体&#xf…

PBR材质背光面太暗优化

图形学中漫反射光照遵循兰伯特光照模型,它的公式如下 其中: :漫反射光颜色 :入射光颜色 :材质的漫反射系数 :法线方向 :光源方向 由于背光面的法线方向和光源方向的点积为负数,因此…

为什么 Golang Fasthttp 选择使用 slice 而非 map 存储请求数据

文章目录 Slice vs Map:基本概念内存分配和性能Fasthttp 中的 SliceMap性能优化的深层原因HTTP Headers 的特性CPU 预加载特性 结论 Fasthttp 是一个高性能的 Golang HTTP 框架,它在设计上做了许多优化以提高性能。其中一个显著的设计选择是使用 slice 而…

golang 中使用 statik 将静态资源编译进二进制文件中

现在的很多程序都会提供一个 Dashboard 类似的页面用于查看程序状态并进行一些管理的功能,通常都不会很复杂,但是其中用到的图片和网页的一些静态资源,如果需要用户额外存放在一个目录,也不是很方便,如果能打包进程序发…

shell编程-3

文章目录 shell学习第三天while 循环第一天的小游戏练习: 编写抽同学回答问题的脚本要想让这个脚本永久有效如何知道两个文件里的内存一样?如何判断某个人已经抽过了 文本处理相关命令seqxargsuniqsorttrcutawkpastesplitcoljoin小结一下作业 小知识点写脚本的流程怎…

基于SkyEye仿真飞腾处理器:运行U-Boot并加载Phytium-FreeRTOS

仿真平台在帮助提升研发效率、加快产品面市时间上的作用已得到诸多验证,通过对处理器进行仿真来支持嵌入式系统及软件的虚拟化开发、测试和验证成为目前应用较为广泛的方法。天目全数字实时仿真软件SkyEye是一款基于可视化建模的硬件行为级仿真平台,在众…

找免费PPT素材、模板,就上这6个网站。

这6个PPT模板网站,免费下载,可商用,赶紧来下载。 1、菜鸟图库 https://www.sucai999.com/search/ppt/0_0_0_1.html?vNTYxMjky 菜鸟图库是一个设计、办公、媒体等素材非常齐全的网站,站内有几百万的庞大素材库,其中PP…

Python 异源mesh裁剪融合实现与优化

Python 异源mesh裁剪融合实现与优化 一、项目需求二、解决方案1. 代码2. 结果3. 耗时 三、优化探索0. 分析1. 在体素边界处进行裁剪2. 用mesh分块进行裁剪3. 用缓冲区的思路裁剪 一、项目需求 对mesh进行裁剪,但发现若非mesh是致密的,那么裁剪边会出现锯…

用通俗易懂的方式讲解:使用Llama-2、PgVector和LlamaIndex,构建大模型 RAG 全流程

近年来,大型语言模型(LLM)取得了显著的进步,然而大模型缺点之一是幻觉问题,即“一本正经的胡说八道”。其中RAG(Retrieval Augmented Generation,检索增强生成)是解决幻觉比较有效的…

Linux网络引导自动安装centos7

目录 一、部署PXE远程安装服务 1. 系统装机的三种引导方式 2. pxe概述 3. 实现过程 4. 搭建过程中服务介绍 4.1 TFTP服务 4.2 vsftp:安装系统镜像文件获取方式 4.3 syslinux 4.4 DHCP服务 5. 操作过程 二、实现Kickstart无人值守安装 1. 安装Kickstart图…