接口(interface)

接口就是多个类的公共规范

接口就是一种引用数据类型,最重要的内容就是:抽象方法

格式:

public interface 接口名称{  接口内容  }

编译生成的字节码文件还是 .class

接口可以包含的内容:

1.常量

2.抽象方法      (Java7)

3.默认方法

4.静态方法   (Java8)

5.私有方法   (Java9)

注意事项:

1.接口中的抽象方法,修饰符必须是 public abstract

2.这两个关键字修饰符,可以都省略不写,或者省略一个,也是抽象方法

3.方法三要素可自由定义

接口使用步骤:

1.接口不能直接使用,必须有“实现类”来“实现”该接口

格式:

public class 类名称 implements 接口名称 {}

2.接口的实现类必须覆盖重写(实现)接口中的所有抽象方法

实现:去掉 abstract ,加上方法体大括号

3.创建实现类的对象,进行使用 (可以Impl)

如果实现类并没有覆盖重写接口中的所有抽象方法,那么这个实现类自己就必须是抽象

关于接口中的默认方法:(解决接口升级,所有实现类报错的问题)

格式:

public default 返回值类型 方法名称(参数列表){ 方法体 }

其中 public 可写可不写

接口默认方法,可以通过接口实现类对象直接调用;也可以被接口实现类进行覆盖重写

关于接口中的静态方法:

格式:

public static 返回值类型 方法名称 (参数列表) { 方法体 }

public 可写可不写

不能通过接口实现类的对象直接调用接口中的静态方法

正确方法:接口方法 . 静态方法名(参数);

关于接口中的私有方法:(解决默认方法中的重复代码问题,私有化的,不让实现类使用 Java 9 开始)

1.普通私有方法:解决多个默认方法间重复代码问题

private 返回值类型 方法名称(参数列表){ 方法体 }

2.静态私有方法:解决多个静态方法间重复代码问题

private static 返回值类型 方法名称(参数列表){ 方法体 }

接口的常量:格式:

piblic static final 数据类型 常量名称 = 数据值;

一旦使用 final 修饰,就说明不可改变

1.public static final 可以省略

2.接口常量必须赋值

3.接口常量名称,必须使用完全大写的字母,用下划线进行分割

ps

1.接口没有静态代码块或者构造方法

2.一个类直接父类是唯一的,但是一个类可以同时实现多个接口

3.重复的抽象方法只需要写一个

4.所有的抽象方法必须重写,不然就必须是抽象类

5.若多个接口的默认方法冲突了,则实现类必须对其重写

6.一个类的直接父类方法,和接口中的默认方法发生冲突,则优先使用父类的方法

7.多个父接口之间的抽象方法重复,没有关系;若是默认方法重复,则子接口必须重写

原文地址:https://www.cnblogs.com/aoligei/p/12372567.html