15 接口

作者: ca8519be679b | 来源:发表于2020-02-15 22:20 被阅读0次

    接口

    定义:公共的规范标准

    1

    接口是多个类的公共规范,上图描述了不同版本jdk的包含内容,现在我用的是9,所以常量,抽象方法,默认方法,静态方法,私有方法都可以有

    格式public interface 接口名{},

    使用intelliJ用新建选择interface

    2 3

    然后就自动创建了我们起名的interface接口

    接口定义抽象方法格式public abstract xx(参数列表);接口中的抽象方法,修饰必须是public abstract(2个修饰符可以选择性省略,但是不建议)

    4

    使用接口抽象方法

    接口使用和抽象类类似,但是不一样

    格式   public class 类名 implements 接口名称{...}            这里关键字为implements而不是extends

    接口的实现类必须重写接口的所有抽象方法,去掉abstract,加上{代码},最后创建实现类的实例

    这里IDE IntelliJ还是可以通过alt+enter实现快速添加复写抽象方法

    5 6 7

    如上使用实现类implements接口,然后使用main类实例实现类调用复写方法

    使用接口默认方法

    从java8开始,接口可以定义默认default方法,为什么要考虑默认方法呢,比如我们定义了一个接口,然后其他人继承写了2个实现类,复写了对应抽象方法,但是如果这个接口升级了,多添加抽象方法就会使2个实现类都报错,这时就考虑使用default方法实现

    8 9

    如上2个图,我们给接口添加了抽象方法,实现类没更新就会标红保错

    10

    而当我们使用默认方法,报错就会消失,这里可以看到public是灰色的,证明可以省略,但是不建议,接口的默认方法记得关键字default,而且要有方法体,default默认方法子类是默认继承的,不复写的话可以直接调用

    11

    使用接口静态方法

    从java8开始,接口可以使用静态方法,我们使用其静态方法一般不需要继承,直接使用静态方法即可,和之前的工具类的思想一样

    12 13

    使用接口私有方法

    从java9开始,接口允许使用私有方法

    14

    如上我们在一个接口里定义了2个默认函数,里面有很多重复的部分,我们可以定义一个公共方法打印后3行,但是我们不希望这个公共方法被子例访问到,希望是私有化的,我们就需要定义私有方法

    私有方法格式

    普通私有方法 public 返回类型 方法名(参数列表){...}                用于解决普通成员方法间重复代码

    静态私有方法 public static 返回类型 方法名(参数列表){...}     用于解决静态方法间重复代码,这里区别是因为静态代码无法访问非静态变量,方法

    私有化的好处时,有人可能尝试实例化后调用这段方法,但是这部分是不能独立存在,必须依赖于几个方法中的,我们就不让其被外部调用,只让其在内部函数间调用

    接口常量使用

    我们在接口里也可以成员变量,其实这相当于是常量定义

    格式 public static final 数据类型 数据名 = 值;

    关键字里public我们知道是公有的,static我们知道是静态,使用接口来调用,不用实例,而final我们之后会讲,这里我们需要知道的就是不能修改

    15

    我们可以看到定义常量,public,static,final都是灰色的,即这些都是可以省略的,而且必须赋值不能只声明,而且建议常量名称全部大写,用下划线进行分割,如NUM_OF_MY_CLASS

    注意:接口没有构造方法和静态代码块

    我们知道类只能继承一个父类,但是实现类可以implements多个接口

    16

    如上,定义了MyInf继承InfA,InfB,这时候就需要同时复写2个接口的抽象方法,当然还是用IDE的ALT+ENTER。如果implements的多个接口有重名,只需要重写1次即可,因为写成了自己的

    如果我们就是想不复写所有的方法,这样普通类implements就会报错,我们只能使用abstract抽象类来实现

    如果我们implements了多个接口,而他们有不同的重名默认方法,我们实现类就需要复写方法

    如果类继承父类又implements接口,2者有重名的默认方法,则我们子类调用的时候是使用父类的方法

    17 18 19 20

    相关文章

      网友评论

          本文标题:15 接口

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