標籤:interface 介面
介面的思想:
舉例:膝上型電腦,USB介面的故事。
1,介面的出現對功能是實現了擴充。
2,介面的出現定義了規則。
3,介面的出現降低了耦合性(解耦)。
介面的出現,完成瞭解耦,說明有兩方,一方在使用這個規則,另一方在實現這個規則。比如膝上型電腦使用這個規則,而外圍裝置在實現這個規則。
介面和抽象類別的區別
描述事物。
犬。按照功能分類。導盲犬,緝毒犬...
犬:
吼叫();
吃飯();
<span style="font-size:18px;">abstract class 犬{public abstract void 吼叫();public abstract void 吃飯();}class 緝毒犬 extends 犬{public void 吼叫(){}public void 吃飯(){}public void 緝毒(){}}//對於緝毒,有可能還有緝毒豬,具備者緝毒功能,應該將緝毒功能抽取。//對緝毒進行描述。abstract class 緝毒{public abstract void 緝毒();}</span>
緝毒犬既需要犬的功能又需要緝毒的功能。
無法直接多繼承。
是否可以多實現呢?可以的。
犬是介面,緝毒也是介面。緝毒犬多實現即可。
類負責描述的是事物的準系統。介面負責描述事物的擴充功能。
緝毒犬是犬中一種。is a 關係,
將犬定義成類。而緝毒是犬的一個擴充功能。這時將緝毒定義介面。
這時描述就變成了這樣:
<span style="font-size:18px;">interface 緝毒able{public abstract void 緝毒();}class 緝毒犬 extends 犬 implements 緝毒able{public void 吼叫(){code..}public void 吃飯(){}public void 緝毒(){}}</span>
緝毒犬的沒有自己的功能,他的功能全部來自父類和介面。抽取是抽取出共有的功能,在緝毒犬中雖然代碼量沒變,但是並沒有定義類,它只需要完善內容就可以了。
小節:
1,抽象類別是描述事物的準系統,可以定義非抽象的方法。
介面中定義只能是抽象方法,負責功能的擴充。
2,類與類之間是繼承關係 is a關係。
類與介面之間是實現關係 like a 關係。
java 介面的思想