interface
Java : 接口
- 接口定義:接口本質上是一類特殊的抽象類
1. 在接口中,所有的方法是public且為abstract方法
2. 在接口中,所有的成員變量也都是public, 類似靜態(tài)常量
3. 接口與接口間可以有多重繼承
4. 接口沒有構造方法,不能以new 接口類名()的形式創(chuàng)建接口實例,
但可以用接口聲明變量。
- 接口的實現:
1. 由類用implements <接口名>
2. 類實現接口必須實現接口定義的所有方法
否則該類只能為抽象類,且顯示給出public修飾符,因為接口默認的訪問控制符為 public,而類的為default
3. 類只能繼承一個,而實現接口可以同時實現多個,以“,”分隔
- 接口的特性
1. 間接多重繼承
2. 接口隔離原則
3. 通過接口設置標準(去耦效果,最重要的作用)
4. 接口的回調機制
接口回調實多態(tài)的另一種體現。接口回調是指:可以把使用某一接口的類創(chuàng)建的對象的引用賦給該接口聲明的接口變量中,那么該接口變量就可以調用被類實現的接口中的方法,當接口變量調用被類實現的接口中的方法時,就是通知相應的對象調用接口的方法,稱為接口回調。不同的類在使用同一接口時,可能具有不同的功能體現,即接口的方法體不必相同,因此接口回調可能產生不同的
行為。
- 接口編程的原則
1. 盡量面向接口編程,
2. 接口隔離原則(用各個小的接口代替大的接口)
-接口與抽象類的區(qū)別
從語法層次上看,
1. 抽象類只能通過繼承,且只能單層繼承一個類。但一個類可以同時實現多個接口。
2. 抽象類可以有成員變量,也可以實現方法,靜態(tài)方法;但在接口中,只靜態(tài)能是常量且值不能被修改。
3. 繼承抽象類與實現接口都要實現所有定義的抽象方法。抽象類可以非抽象的方法,而接口不能方法的實現。
4. 接口定義的變量默認都是public final static的常量,且必須指定具體的值,可以用接口名.變量名 直接點出常量。
5. 接口的方法默認都是public abstract類型
從設計理念上看,
抽象類,它是"is-a"的關系;而接口是"like-a"的關系。