接口是一种类似于类的结构,可用于声明实现类所必须的声明的方法。例如,接口通常用来声明API,而不用定义如何实现这个API。虽然接口与抽象类很相似,但是接口只能包含方法原型,而不能包含任何完整定义了的方法。这可以防止使用抽象类时可能出现的方法冲突,从而在给定的实现类上使用多个接口。然而,既然接口不能定义具有完整实现的方法,因此如果我们希望为继承着提供默认功能,就必须单独提供一个非抽象的基类。
为了要声明接口,需要使用关键字 interface。
说明 :为了在代码和生成的文档中将接口和类区别开,在接口名称前加上大写的字幕 I 作为前缀。
和继承抽象类需要使用extends关键字不同的是,实现接口使用的事implements关键字。
class ExampleClass implements IExampleInterface{}
为了形成一个完整的类,必须实现接口中的所有方法,这样其他类才能依赖与接口中定义的所有方法。只要有一个接口方法没有实现,就会破坏定义公共接口的作用,因而这是不允许的。
接口优于抽象类的一点是每个类可以使用多个接口。当希望在一个类中实现两个或两个以上的接口时,可以使用逗号分割。class MyArrLikeObj implements Iterator, Countable{}.
通常,在子类和父类之间存在有逻辑上的层次结构时,应该使用抽象类。而在希望支持差别较大的两个或者更多对象之间的特定交互行为时,使用抽象类就会显得不合理,此事应该使用接口
。