接口和接口之间的关系
继承关系
可以多继承,并且可以多层继承
注意:
1.如果多个父接口中有同名的抽象方法,那么子接口只需要实现一次即可
2.如果多个父接口中有同名的默认方法,那么子接口必须重写默认方法,必须要加default关键字3.如果多个父接口中有同名的静态方法,那么无须理会,因为静态方法只能供接口使用
4.如果多个父接口中有同名的私有方法,那么无须理会,因为私有方法只能本接口使用
接口和类之间的关系
实现关系
单实现: 一个类只实现一个接口
多实现: 一个类可以同时实现多个接口
格式:
public class 类名 implements 接口名1,接口名2,...{ }
注意:
1.如果多个接口中有同名的抽象方法,那么实现类只需要实现一次即可
2.如果多个接口中有同名的默认方法,那么实现类必须重写一次,并且要去掉default关键字
3.如果多个接口中有同名的静态方法,那么实现类无须理会,接口中的静态方法只供接口直接使用
4.如果多个接口中有同名的私有方法,那么实现类无须理会,因为接口中的私有方法只能在本接口中使用
子接口重写父接口的默认方法,必须加default关键字
实现类重写接口中的默认方法,必须去掉default关键字
一个类既可以继承另一个类,也可以实现多个接口
格式:
public class 类名 extends 父类名 implements 接口名1,接口名2,...{
}
注意:
1.如果接口和父类中有同名的默认方法,优先调用父类的默认方法
2.如果接口和父类中有同名的抽象方法,那么子类必须重写一次抽象方法
普通类、抽象类和接口
普通类: 成员变量,构造方法,成员方法,静态代码块
抽象类: 成员变量,构造方法,成员方法,静态代码块,抽象方法 ---> 不能直接创建对象
接口: 常量,默认方法,静态方法,私有方法,抽象方法 ---> 不能直接创建对象
接口作为方法的参数,可以接收该接口的所有实现类的对象
接口作为方法的返回值,可以返回该接口的所有实现类的对象