這一章節我們來說一下介面另乙個特性:多重介面。
在平常,使用繼承,我們只是繼承某一類,只能夠一種向上轉型,但是在介面的使用方面,可以實現多個介面,然後實現多種的向上轉型。
我們先上**:
package com.ray.ch07;
public class test
public static void testeat(caneat caneat)
public static void testrun(canrun canrun)
public static void main(string args)
}inte***ce canrun
inte***ce canswim
inte***ce caneat
class person implements caneat, canrun, canswim
@override
public void run()
@override
public void eat()
}class fish implements canswim
}
解釋一下上面的**:
1.建立了三個介面:會游泳,會跑,會吃
2.建立乙個person類,實現上面三個介面
3.建立乙個fish類,只是實現游泳的介面
4.然後在測試**裡面使用策略設計模式,測試一下三種技能
在**裡,person 分別向上轉型為canrun、canswim、caneat這三種型別,這樣大大增強**的靈活性,要不然我們就必須在測試**方面增加**,才能夠完整測試。而且也不利於**的復用,假如canswim這個不是介面,他變成了基類,但是他的實現可能對於person或者fish來說都是不合適的,而且**可能歧義,但是現在是介面,只是一種協議,說明子類只是具備某種功能,而這個功能怎麼實現,具體需要根據子類的實現來說,這樣**更能夠廣泛的復用。
總結:這一章節主要講述了介面的多重實現,以及他的靈活性。
這一章節就到這裡,謝謝。目錄
從頭認識java 1 3 隱藏具體實現
這一章節我們來聊聊為什麼需要隱藏具體實現。一般來說,程式設計分為類的建立者與類的使用者,建立者將一部分脆弱的 隱藏起來,只暴露某些必須的方法給使用者,這樣,建立者就可以根據需要修改隱藏部分,而不會影響使用者的呼叫。為什麼需要隱藏具體實現。1 讓使用者不能隨意訪問所有的 例如 package com....
從頭認識java 1 5 繼承(2)
接著上一章節,我們來繼續介紹繼承。1.子類呼叫方法時的查詢方法的順序 package com.ray.ch01 public class animal public void sleep package com.ray.ch01 public class bird extends animal pu...
從頭認識java 8 6 匿名內部類
這一章節我們來討論一下匿名內部類。我們之前已經提到了內部類,如下 package com.ray.ch03 public class test private mytest mytest public static void main string args inte ce mytest 上面的內部...