接口
- 声明
【权限修饰符】 interface 接口名{
接口的成员列表;
} - 接口的成员
JDK1.8之前,只有两种成员
(1)全局的静态常量:public static final … 这三个单词可省略
(2)公共的抽象方法:public abstract … 这两个单词可省略
JDK1.8及之后,增加了两种新成员
(3)静态方法:public static 不可以省略
调用方式:接口名.静态方法(实参列表)
(4)默认方法:public default 不可以省略
(默认方法是原来的抽象方法有了一个默认实现,如果实现类的实现和接口中一样,就不需重写) - 冲突问题
(1)当一个类同时实现了两个甚至多个接口,而且这些接口中出现了方法签名相同的默认方法时,我们必须做出选择:
1.保留其中一个:重写该方法,重写时default要去掉
2.都不用,自己重写一个
(2)当一个类同时继承了父类,又实现了接口,而且父类和接口中有方法签名相同的方法时,
1.编译器默认选择保留父类
2.改选保留接口中
3.自己重写一个 - 接口的实现
(1)语法格式:
【修饰符】 class 实现类 implements 接口们{
} - 接口的特点
(1)在实现类实现接口时,要么实现/重写所有的抽象方法,要么这个实现类是一个抽象类
(2)接口不能直接创建对象
(3)接口类型的变量与实现类的对象构成多态引用
(4)一个类继承父类时,Java只支持单继承,但一个类在实现接口时,可以同时实现多个接口
(5)一个类同时继承父类,又实现接口时,要求继承写在前,实现在后
【修饰符】 class 实现类 extends 父类 implements 接口们{
}
(6)接口还可继承接口,并且同时可继承多个
【权限修饰符】 interface 子接口 extends 父接口们{
}