美文网首页
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-----接口

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