展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Java接口的使用与原理是什么

Java接口的使用与原理是什么

何为接口?官方解释:Java内的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。个人理解解释:其实接口可以理解为一种特殊的类,这个类里面全部是由全局常量和**公共的抽象方法(需要重写)所组成。接口是解决Java无法使用多继承的一种手段。我们可以把接口理解为是一个100%的抽象类,既接口中的方法必须全部是抽象方法。反正接口里面都是方法,但是没有方法体,其他类实现这个接口后重写方法体即可。为什

本文目录

    何为接口?

    官方解释:

    Java内的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

    个人理解解释:

    其实接口可以理解为一种特殊的类,这个类里面全部是由全局常量和**公共的抽象方法(需要重写)所组成。接口是解决Java无法使用多继承的一种手段。我们可以把接口理解为是一个100%的抽象类,既接口中的方法必须全部是抽象方法。反正接口里面都是方法,但是没有方法体,其他类实现这个接口后重写方法体即可。

    为什么要用接口

    • 接口被用来描述一种抽象。

    • Java可以通过实现接口来弥补一个类不能多继承的局限

    • 接口也被用来实现解耦

    • 接口被用来实现抽象,而抽象类也被用来实现抽象,为什么一定要用接口呢?接口和抽象类之间又有什么区别呢?原因是抽象类内部可能包含非final的变量,但是在接口中存在的变量一定是final,public,static的。

    接口怎么写?

    创建接口的关键字:interface

    实现接口的关键字:implements

    public interface StudentTest {   //StudentTest:接口名称
         
        public void Study();      //接口内的方法,在接口内不提供方法体。
    }
    //这就是一个简单的接口

    实现接口:

    public class student implements StudentTest{
        
        @Override
        public void Study(){
            System.out.println("我继承了StudentTest,并重写了接口内的Study方法");
        }
    }
    
    //测试类
    public class TestMain {
        public static void main(String[] args) {
            student s = new student();
            s.Study();
        }
    }

    //输出:我继承了StudentTest,并重写了接口内的Study方法

    //代码解释:
    //1、用interface创建StudentTest接口,接口内有Study方法
    //2、新建student类,用implements实现StudentTest接口
    //3、重写Study()方法
    //4、测试类测试

    注意:实现一个接口,需要重写这个接口里面的所有方法!!!!

    上述代码和解释完成了对接口的初步理解,下面我们对接口有个进一步的理解:

    进一步理解接口:

    在生活中,我们都有U盘,若要在电脑上对U盘进行读取和写入,我们需要使用USB接口。一台电脑有多个USB接口,所以我们先定义两个USB接口,并且有两个方法,分别是读取和写入:

    //第一个USB接口
    public interface USB1 {   
        public void read_1();  //读取方法
        public void write_1();  //写入方法
    }
    
    
    //第二个USB接口
    public interface USB2 {
        public void read_2();  //第二个U盘的方法
        public void write_2();
    }

    然后我们有一个U盘,因为U盘使用的是标准USB接口,所以两个USB接口我们都可以进行读取和写入,U盘类就实现了USB1和USB2两个接口,并重写了方法:

    package instance_test;
    
    public class YOUPAN implements USB1,USB2{
        @Override
        public void read_1() {
                System.out.println("这是用第一个USB的读取接口");
        };
    
        @Override
        public void write_1() {
                System.out.println("这是用第一个USB的写入接口");
        };
    
        @Override
        public void read_2() {
                System.out.println("这是用第二个USB的读取接口");
    
        };
    
        @Override
        public void write_2() {
                System.out.println("这是用第二个USB的写入接口");
            };
    
        }
    
    //意思是U盘只要符合USB接口标准,使用任意一个都可以操作方法

    然后我们开始使用两个接口:

    测试类:

    public class Test_Main {
        public static void main(String[] args) {
            YOUPAN y = new YOUPAN();
            y.read_1();
            y.write_1();
            y.read_2();
            y.write_2();
        }
    }

    结果:

    /*
    这是用第一个USB的读取接口
    这是用第一个USB的写入接口
    这是用第二个USB的读取接口
    这是用第二个USB的写入接口
    */

    然后我们现在有一部手机,有根数据线,数据线两头分别是USB和Type_C,若要用数据线对手机进行充电和更新数据,就同时要实现USB和Type_C两个接口,所以我们新建一个Type_C接口:

    public interface Type_C {     //Type_C接口
    
        public void Charge();    //充电
        public void Update();   //更新数据
    
    }

    然后新建一个手机类,有根数据线,并且实现了USB接口和Type_C接口:

    public class phone implements USB1,Type_C{   //数据线实现 USB1,Type_C接口
        
        @Override
        public void read_1() {
        	System.out.println("手机用第一个USB的接口和")
    	    //数据线使用USB接口的同时,会给一句提示语
        }
    	
    	
        @Override
        public void write_1() {
        	System.out.println("手机用第一个USB的接口和")
        }
    
        @Override
        public void Charge(){
            System.out.println("使用Type_C接口充电");
            //数据线使用Type_C接口的同时,会给一句提示语
        }
    
        @Override
        public void Update(){
            System.out.println("使用Type_C接口更新数据");
        }
    
    }

    接着测试手机类:

    public class Test_Main {
        public static void main(String[] args) {
    
            phone p = new phone();
    
            p.read_1();
            p.Charge();
            System.out.println("----------------");
            p.read_1();
            p.Update();
        }
    }

    结果:

    /*
    手机用第一个USB的接口和
    使用Type_C接口充电
    ----------------
    手机用第一个USB的接口和
    使用Type_C接口更新数据

    */

    这样一个类就实现了对多个接口的实现,恰恰解决了Java中类不能继承多个父类的局限性!!

    接口的总结:

    • 不能直接实例化接口,因为接口内方法都是抽象的,没有方法体,需重写

    • 一个类可以实现多个接口

    • 一个类如果要实现某个接口的话,那么它必须要实现这个接口中的所有方法

    • 接口中所有的方法都是抽象的和public的,所有的属性都是public、static、final的

    • 接口用来弥补类无法实现多继承的局限

    • 接口也可以用来实现解耦(关于解耦可以参考这篇文章:解耦的理解)

    • 接口也可以继承,并且可以多继承(没错,接口可以多继承!)

    public interface USB3 extends USB1,USB2{
    } //这句多继承语法是OK的

    大家看到这里,已经知道接口也是一个抽象的,那么接口和抽象类有什么区别呢?

    接口和抽象类的区别(这也是面试题,整理自互联网):

    抽象类和接口的对比:

    • 抽象类是用来捕捉子类的通用特性的。接口是抽象方法的集合。

    • 从设计层面来说,抽象类是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。

    两者的相同点:

    • 接口和抽象类都不能实例化

    • 都位于继承的顶端,用于被其他实现或继承

    • 都包含抽象方法,其子类都必须覆写这些抽象方法

    两者不同点:

    Java接口的使用与原理是什么

    备注::Java8中接口中引入默认方法和静态方法,以此来减少抽象类和接口之间 的差异。 现在,我们可以为接口提供默认实现的方法了,并且不用强制子类来实现它。 接口和抽象类各有优缺 点,在接口和抽象类的选择上,必须遵守这样一个原则:

    • 行为模型应该总是通过接口而不是抽象类定义,所以通常是优先选用接口,尽量 少用抽象类

    • 选择抽象类的时候通常是如下情况:需要定义子类的行为,又要为子类提供通用 的功能。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Java
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。

    AlwaysUp Windows版
    AlwaysUp Windows版

    AlwaysUp是一款面向Windows的系统服务注册与程序托管工具,可让普通应用、脚本及批处理在无人登录时随系统启动,并通过状态检测、异常重启、资源监控和邮件通知保障关键任务持续运行。