接口是一种规范,是一种定义。类描述了对象的属性和行为,而接口包含了一个类需要实现的行为。
接口的好处是伸缩性更强,类的属性划分更合理。接口能够用于暴露一个类的某些行为,而不是这个类的所有行为。接口还可以用于强制作用于其它对象的行为,以确保某些方法被对象实现。
以面向对象的角度考虑,将一个类与自身本来的特征和行为与依赖于外部的可选特征和行为分离,让类尽可能的单纯,即解耦。(java特点:高类聚,低耦合)。
在Java语言中,关键字interface用于声明接口。类用关键字implements来实现接口。接口具有下列性质:
a、接口默认是抽象的。在声明接口时,不需要使用关键字abstract;
b、接口中的每一个方法默认也是抽象的,所以也不需要关键字abstract;
c、接口中的方法默认访问级别是public。
接口与抽象类的区别:
a、接口中只能包含抽象方法;而抽象类中可以包含普通方法。
b、接口中不能定义静态方法;而普通方法可以定义静态方法。
c、接口中只能定义静态常量属性,不能定义普通属性;而抽象类既可以定义普通属性,也可以定义静态常量属性。
d、接口不包含构造器;而抽象类中可以包含构造器。
e、接口中不包含初始化块;而抽象类可以包含初始化块。
f、一个类最多有一个直接父类,包含抽象类;但一个类可以有多个接口,补充单继承的不足。
g、接口不能被一个类继承,只能被一个类实现。
h、类描述了对象的属性和行为,而接口包含了一个类需要实现的行为。
接口代表一种能力,接口是一种约定,接口是一种角色。