美文网首页
Java-----接口

Java-----接口

作者: 会写代码的小猿猴 | 来源:发表于2021-12-22 15:51 被阅读0次

接口的定义

当一个类中的所有方法都是抽象方法时,我们可以将它定义为接口,接口也是一种引用数据类型,它比抽象类还要抽象。

接口存在的两个意义:

  • 规则的定义
  • 程序的扩展性

接口的定义和特点

为了区分接口和继承的区别,建议阅读我的另一篇文章Java-----继承

  • 接口使用关键字interface来定义,定义格式为:public interface 接口名{}
  • 接口不能实例化(与抽象类类似,因为内部有抽象方法所以不能被创建对象)
  • 接口与类之间是实现关系,通过关键字implements关键字表示,格式为:
    public class 类名 implements 接口名{}
    这里需要注意和继承的区别,继承是使用extends关键字,一个类只能继承一个父类,但是一个类可以实现多个接口,接口名之间用逗号分开。如果一个类实现了n个接口,那么它需要重写这n个接口中的所有方法。

接口中的成员特点

  • 成员变量只能是常量,默认修饰符: public static final
  • 没有构造方法
  • jdk7及以前的版本:成员方法只能是抽象方法,默认修饰符: public abstract
  • JDK8版本后:允许在接口中定义非抽象方法,但是需要使用关键字default修饰,这些方法就是默认方法。
    之所以在jdk8以后版本对成员方法加入该特性,是因为在开发中有需求,比如我们需要在一个接口中新增几个方法,如果我们增加抽象方法,会导致需要实现了该接口的所有类都去重写这几个抽象方法,所以jdk8以后就增加了可以在接口中定义非抽象方法的功能。
  • JDK8版本后允许在接口中定义静态方法,但是定义的静态方法只能通过接口名的方式来调用(静态变量的第二种调用方式),不能通过该接口的实现类以及实现类的对象来调用。
  • JDK9版本后允许将接口中的非抽象方法和静态方法私有化。

接口中默认方法的注意事项:

  • 默认方法不是抽象方法,所以不强制被重写。但是可以被重写, 重写的时候去掉default关键字
  • public可以省略, default不能省略
  • 如果实现了多个接口,多个接口中存在相同的方法声明,子类就必须对该方法进行重写

类和接口的关系

  • 类和类的关系
    继承关系,只能单继承,但是可以多层继承
  • 类和接口的关系
    实现关系,可以单实现,也可以多实现,还可以在继承-一个类的同时实现多个接口
  • 接口和接口的关系
    继承关系,可以弹继承,也可以多继承

上述关于接口每句话都是自己踩坑总结出来的,每一句都是精髓,虽然没有demo演示,但值得细细研读。

相关文章

  • Java-----接口

    接口的定义 当一个类中的所有方法都是抽象方法时,我们可以将它定义为接口,接口也是一种引用数据类型,它比抽象类还要抽...

  • Java-----多态

    概述 同一个对象在不同时刻表现出的不同形态,这就是多态。举一个例子:猫我们可以说猫是猫:猫 cat=new 猫()...

  • Java-----继承

    1、什么是继承? 继承就是让类与类之间产生关系(子父类关系),子类可以直接使用父类中的非私有成员。注意:子类不能使...

  • Java-----抽象方法

    抽象类是Java中非常简单但很重要的一个知识点,本来觉得简单不想写的,但觉得学习不分简易,还是那句话,万丈高楼平地...

  • Java-----代码块

    什么是代码块 在Java中, 使用{ }括起来的代码被称为代码块,可分为局部代码块、构造代码块、 静态代码块。 局...

  • Java-----集合基础篇

    我最近也在想要不要把一些基础的东西复习一下,毕竟万丈高楼平地起,后续还会出一篇集合的进阶篇,关于jetpack组件...

  • Java-----基于面向对象开发学生管理系统

    1、大致功能 开发一个简单的系统,该系统可以对学生进行增删改查(CRUD); 2、需求分析 添加学生:键盘录入学生...

  • 接口接口接口

    发现很多朋友对于接口都很纠结,阐述一下个人对接口的理解。 接口分为很多种类型,程序语言内部接口 移动端和服务端接口...

  • Android常用接口

    不知名接口 头条接口: 科技接口: 财经接口: 军事接口: 体育接口: 房产接口: 足球接口: 娱乐接口: 电影接...

  • 第十八天 微信微博天气接口

    分享接口 微信接口 微博接口 天气接口 mob接口

网友评论

      本文标题:Java-----接口

      本文链接:https://www.haomeiwen.com/subject/ksmqqrtx.html