接口类
- 含义:接口也是一种规范,约束别的类必须干什么事情
-
用法:接口时用来被类实现的(implements)的,实现接口的类称为实现类,实现类也可以理解为子类
注意:规范的基本特征时约束和公开,所以接口中的抽象方法默认会自动加上public abstract修饰,接口中的常量默认会加上public static final修饰
-
类和类的关系:单继承,一个类只能继承一个直接父类
public class Son extends Father { }
-
类和接口的关系:多实现,一个类可以实现多个接口
public class Test implements InterfaceA,InterfaceB{ // 两个接口方法都要实现.. }
一个类实现多接口,必须重写完全部接口的全部抽象方法,否则这个类必须称为抽象类。
-
接口和接口的关系:多继承,一个接口可以同时继承多个接口
public interface InterfaceC extends InterfaceA,InterfaceB{ // 这样A和B的方法都聚合到C这了到时候实现类只用实现C接口即可 }
接口多继承的作用:规范合并,整合多个接口为同一个接口,便于子类实现
JDK 8后开始新增了三个方法
public interface SportMan {
/**
1、默认方法:其实就是实例方法。
-- 必须用default修饰,默认会自带public
-- 必须用接口的实现类的对象来调用
*/
default void run(){
go();
System.out.println("==跑的贼溜==");
}
/**
2、静态方法
-- 必须static修饰,默认会自带public
-- 必须用接口名自己调用
*/
static void inAddr(){
System.out.println("我们在黑马");
}
/**
3、私有实例方法:
-- 必须用private修饰
-- 只能本接口中访问。
-- 一般给接口中其他的默认方法或者私有实例方法使用的
*/
private void go(){
System.out.println("开始跑~~");
}
}
接口的注意事项
- 接口不能创建对象
- 一个类实现多个接口,多个接口的规范不能冲突
- 一个类实现了多个接口,多个接口中有同样的静态方法不冲突,因为接口中的静态方法只能对应的接口类名.静态方法调用
- 一个类继承了父类,同时又实现了接口,父类中和接口中有同名方法,默认用父类的
- 一个类实现了多个接口,多个接口中存在同名的默认方法,可以不冲突,这个类重写该方法即可
- 一个接口继承了多个接口,如果接口中的规范冲突则不能多继承