接口是一種規範,是一種定義。類描述了對象的屬性和行為,而接口包含了一個類需要實作的行為。
接口的好處是伸縮性更強,類的屬性劃分更合理。接口能夠用于暴露一個類的某些行為,而不是這個類的所有行為。接口還可以用于強制作用于其它對象的行為,以確定某些方法被對象實作。
以面向對象的角度考慮,将一個類與自身本來的特征和行為與依賴于外部的可選特征和行為分離,讓類盡可能的單純,即解耦。(java特點:高類聚,低耦合)。
在Java語言中,關鍵字interface用于聲明接口。類用關鍵字implements來實作接口。接口具有下列性質:
a、接口預設是抽象的。在聲明接口時,不需要使用關鍵字abstract;
b、接口中的每一個方法預設也是抽象的,是以也不需要關鍵字abstract;
c、接口中的方法預設通路級别是public。
接口與抽象類的差別:
a、接口中隻能包含抽象方法;而抽象類中可以包含普通方法。
b、接口中不能定義靜态方法;而普通方法可以定義靜态方法。
c、接口中隻能定義靜态常量屬性,不能定義普通屬性;而抽象類既可以定義普通屬性,也可以定義靜态常量屬性。
d、接口不包含構造器;而抽象類中可以包含構造器。
e、接口中不包含初始化塊;而抽象類可以包含初始化塊。
f、一個類最多有一個直接父類,包含抽象類;但一個類可以有多個接口,補充單繼承的不足。
g、接口不能被一個類繼承,隻能被一個類實作。
h、類描述了對象的屬性和行為,而接口包含了一個類需要實作的行為。
接口代表一種能力,接口是一種約定,接口是一種角色。