接口(interface)
接口:使用interface关键字修饰。
[权限修饰符] interface 接口 [父类接口,父类接口,。。。]{
静态全局常量
// 抽象方法
// JDK1.8以后,我们还可以定义静态方法和default修饰的成员方法
}
注意:
1)接口中的属性,默认为全局静态常量,也就是默认使用“public static final”来修饰
2)接口中的方法,默认为抽象方法,也就是默认使用“public abstract”来修饰JDK1.8之后,接口中还可以定义静态方法和default修饰的成员方法
3)因为接口中包含抽象方法(只有方法的声明,没有方法的实现),所以接口不能被实例化!
4)接口中,不能存在:静态代码块、构造代码块、构造方法、成员变量、静态变量、非default修饰的成员方法
JDK1.8之后,接口中还可以定义静态方法和default修饰的成员方法
5)接口可以作为方法的返回值类型,也可以作为方法的形参,也就是说接口也能实现多态!
6)接口和接口之间属于extends关系,并且接口可以实现多继承!
接口的实现:
需求:如果想要一个类,功能既要强大,又要安全,那么我们该怎么去实现???
解决:让这个类先实现一个父类,然后再实现多个接口,这就是接口的多实现!
因为一个实现类,可以先继承于某个父类,然后再实现多个接口!
接口和抽象类的区别
思考:你对接口、抽象类和普通类的理解!
理解:都是向上提取的结果。接口抽取的程度最高,然后抽象类抽取程度次之,普通类抽象抽取程度最低!
接口和抽象类相同点
1)接口和抽象类都不能被实例化。
2)接口和抽象类中都可以包含抽象方法。
3)接口和抽象类都可以实现多态!
接口和抽象类不同点
1)抽象类与抽象类之间属于继承(extends)关系,只支持单继承。
接口与接口之间属于继承(extends)关系,并且支持多继承。
2)实现类和抽象类之间属于继承(extends)关系,属于单继承。
实现类和接口之间属于实现(implements)关系,属于多实现。
3)抽象类描述的是“is a”的关系,描述的是“同一体系”中的基本行为。
接口描述的是“is like a”的关系,描述的是“不同体系”中的共同行为。
4)抽象类包含:抽象方法、属性(成员变量和静态变量)、方法(成员方法和静态方法)、构造方法、代码块(静态代码块、构造代码块)
接口包含:全局静态常量、抽象方法、JDK1.8以后还支持:静态方法、default修饰的成员方法。