Java | interface 和 implements 关键字【接口,看这篇就够了】

本文详细介绍了Java中的接口,包括接口的基本概念、定义与实现(interface和implements关键字)、接口的特点和作用、接口的UML图、接口回调与多态的联系,以及函数接口和Lambda表达式的应用。通过实例分析和实战项目,帮助读者深入理解接口的使用,特别是如何通过接口实现多态和面向接口的编程思维。
摘要由CSDN通过智能技术生成

学完继承、学完多态,但面对汹涌而来:ocean:的接口,相信很多同学都不知所措,因此我耗费几天几夜的时间,搜寻大量书籍资料,苦心闭关钻研,写出了一篇关于 Java 的接口从入门小白到精通大佬的学习之路,相信这篇文章一定对您有所帮助:book:

🌳接口的基本概念引入

Java 接口是一系列方法的声明,是一些方法特征的集合

  • 对于接口,它是 Java 中一个新增的知识点,而 C++中没有,因为 Java 有一个缺陷就是==不可以实现多继承==,只可以单继承,这就限制了有些功能的使用,于是为了让 Java 也能有这种能力,因为提出了接口的概念

  • 对于接口的基本概念,大家应该要回想一下我们上一文所讲的 abstract 抽象类的概念,因为接口它与抽象类非常类似,在抽象类中我们可以了解到其实除了不可以实现一些抽象方法外,其余的和正常的类没有什么本质的区别,一些常量、变量,私有、静态方法都可以定义,但是在接口中,就只能有抽象方法以及常量,而且接口中所有抽象方法的访问权限都是 public 公开的,因为它也算是 static 静态方法,所以可以省略 public 和 static 这两个关键字

  • 但是从 JDK8 开始,就有了一些改变,接口中也可以定义 default 和 private 关键字修饰的方法,对于 default 关键字修饰的方法,不可以将此关键字省略,因为在接口体中不允许定义通常的带方法体的 public 实例方法;而对于 private 修饰的方法,则是配合 default 默认方法进行使用,即将某些算法封装在 private 方法中,供接口中的实例方法调用

🌳如何去定义和实现一个接口

了解了接口的基本概念之后,是不是很想知道一个接口时怎么去定义和实现呢,让我们马上来看一看吧

🔑【interface 关键字】

  • 首先最基本的定义一个接口,对于接口,如果你觉得有一些方法它们有一个功能的类名,那你就可以把它定义为一个接口,在这个接口中去定义一些抽象方法,比方是大家都会运动,运动的方式有很多,比方说跑步、游泳等等,但是你做这些事情的方式的方式和节奏和人家专业运动员又不一样,所以可以由不同的类去继承这个接口,然后去实现具体的对应的功能,

public interface Sport {
      void run();     //跑步        void swim();    //游泳}

复制代码

  • 这和类的定义很相似,细心的小伙伴可以看出来这是将 class 关键字换成类 inferface 关键字,但是变得可不止这一种哦,接口可是有它的专属图表的:sparkler:

IDEA

eclipse

  • 这两个 Java 编译器应该是大家用的最用的了,对于接口,细心的小伙伴应该可以发现,存在一个【大写的 I】,这个标志就是【interface】的首字母大写了,相信这点很多人都没有发现吧

🔑【implements 关键字】

  • 好,说完如何入定义一个接口,接下去就来讲讲怎么去实现一个接口吧

  • 那就是用【implements 】这个关键字,通过一个具体的类去实现

public class People implements Sport{
  }

复制代码

  • 但是这样的话就会出现报错,这个我们在继承抽象类的时候就有说过,继承一个抽象类,就要去重写其所有的抽象方法

public class People implements Sport{
      @Override    public void run() {
          System.out.println("我会慢跑🏃‍");    }
    @Override    public void swim() {
          System.out.println("我会自由泳🏊‍");    }}

   关注公众号【编程程序V】,分享更多Java技术前沿文章,Java学习面试资源。

【注意事项】

  • 对于抽象类的话,如果你用一个抽象类去继承,那么你就不用重写这个抽象方法,当然对于接口也是一样

  • 如果一个非 abstract 类实现了某个接口,那么这个类就必须重写该接口的所有抽象方法

  • 如果一个 abstract 类实现了某个接口,那么这个类可以选择重写接口中的抽象方法或者该接口的抽象方法

🌳接口特点及作用

了解了接口的定义和实现之后,接下来我们来说一说接口有哪些特点以及其具体的作用

🍃接口的特点

  • ①接口虽与抽象类相似,但是比抽象类更加抽象,却不需要写 abstract 关键字,因为接口中所有方法都时抽象的,因此可以省略这个关键字

  • ②接口中只可以有常量,而且都是 public、static、final 关键字修饰的,但是不可以有变量

  • ③接口没有构造方法,因此不可以用 new 关键字去创建接口的对象,而是要用一个具体的类去 implements 实现这个接口

  • 一个类可以实现多个接口,一个接口可以继承多个接口【有点抽象,上代码】

public interface Sport {
      void run();    void competition();}

复制代码

public interface Law {
      void rule();}

复制代码

public class PingPongMan implements Sport,Law{
      private String name;
    public PingPongMan(String name) {
          this.name = name;    }
    @Override    public void rule() {
          System.out.println(name + "必须遵纪守法");    }
    @Override    public void run() {
          System.out.println(name + "必须参加训练");    }
    @Override    public void competition() {
          System.out.println(name + "必须参加比赛");    }}

复制代码

public class Test {
      public static void main(String[] args) {
          PingPongMan p = new PingPongMan("张继科");        p.run();        p.competition();        p.rule();    }}

复制代码

  • 上述代码实现的是一个类实现多个接口,这个类不是一个抽象类,那就要重写实现接口的中的所有抽象方法

public interface Law {
      void rule();}

复制代码

public interface People {
      void sleep();    void eat();}

复制代码

public interface Sport extends Law,People{
      void run();    void competition();}

复制代码

  • 好,具体测试不给出了,主要是看这个接口可以继承多个接口,可以看出 Sport 接口使用了 extends 关键字继承类 Law 和 People 这两个接口

以上的这==两个特点很重要==,也是弥补了 Java 类不能多继承的缺陷

  • ⑤一个类,它可以在继承父类的情况下同时实现接口

class Dog extends Animal implements Runnging,Drinking{
  }

复制代码

📕接口的作用和意义

  • 有些刚刚接触 Java 接口的小伙伴就很疑惑,这个接口到底是用来干嘛的呢,它究竟有什么具体的作用

  • 首先我们来总的概括一下,就是一句话:【定义一个公共规范,实现一个统一访问】

  • 对于公共规范这个概念,就是大家都认可的,是一种标准,就像是 USB(通用串行总线)一样,这个接口是很多家公司联合提出的,因此属于一个规范,在日常生活中,我们使用的很多设备都拥有 USB 接口,这个 USB 接口呢,它就是 Java 中所说的接口,如果有一个物件,比如说笔记本,拥有这个接口,也相当于是实现了这个接口,那就说明笔记本这个类有了 USB 这个功能,外部设备便可以与它产生一个联系,比如说最常见的 U 盘,只要是有 USB 接口的地方,那么这个 U 盘都可以使用,这么说大家应该有点清楚了吧,==下面会更加详细地深入了解接口==

  • 对于统一访问,举个例子,对于 LOL 这款游戏大家应该都玩过,一个英雄,是不是一定会有相同的功能,比如说攻击、点塔、补刀这些,但是 LOL 中 157 个英雄,假设它们都对应一个类,难道在每个英雄类中都去写这三个功能吗,那一定不会,这是就可以定义一个基本英雄功能接口,里面封装了所有英雄所具备的基本能力,然后所有英雄类都去访问这个接口就可以

🌳接口的 UML 图(类图)

初步入门了接口后,接下去我们就要了解接口与它的实现类之间所存在的逻辑框架关系,也就是类图,这可以进一步帮助我们去理解接口

🍃UML 图的基本概念

统一建模语言(Unified Modeling Lan

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值