抽象方法:不完整的,僅有聲明而沒有方法體。
抽象類:包含抽象方法的類。(若一個類包含一個或多個抽象方法,則該類必須限定為抽象的。)
1.用抽象類直接建立對象是不安全的,因為這個抽象類是不完整的。編譯器通過這種方式保證了
抽象類的純粹性。
2.一個類從抽象類中繼承,若想建立改類的對象,就必須實作基類中的所有抽象方法。否則将無法建立該類的對象,
并且導出類也是抽象類。
3.可以建立一個沒有任何抽象方法的抽象類。(若有這樣一個類,包含任何抽象方法都顯得沒有實際意義,而且我們也想阻止産生這個類的任何對象)
4.抽象類并不需要所有的方法都是抽象的。
作用:
1.明确類的抽象性,并告訴使用者和編譯器打算怎樣來使用它們。
2.抽象類是很有用的重構工具,使我們能很容易的将公共方法沿着繼承層次向上移動(也就是将公共方法抽取重構到抽象類中)
interface關鍵字使抽象更進一步,産生一個完全抽象的類,沒有提供任何具體的實作。(隻有方法名,參數清單和傳回類型,沒有任何方法體。接口隻提供了形式,而未提供任何具體實作)
一個接口表示:“所有實作了該特定接口的類看起來都像這樣”
接口被用來建立類和類之間的協定(protocol)。
接口不僅僅是一個極度抽象的類,因為接口允許我們通過建立一個能夠被向上轉型為多種基類的類型
來實作類似于多重繼承的特性。(java隻支援單繼承,但可以通過實作接口來達到多繼承的效果)
接口中可以包含域,但是這些域隐式地是static和final的。
使用implements關鍵字讓一個類遵循某個接口(或是一組接口)。它表示:"接口隻是它的外貌(what it looks like),我們用類實作接口來聲明它是如何工作的(how it works)"
政策設計模式: 建立根據所傳遞的參數對象的不同而具有不同的行為的方法(這類方法包含所要執行的算法中
固定不變的部分,而政策包含變換的部分,政策就是傳遞進去的參數對象)
擴充卡設計模式: 擴充卡中的代碼将接受所擁有的接口,并産生所需要的接口。
将接口從具體實作中解耦使得接口可以應用于多種不同的具體實作,是以代碼也就更具複用性。
原文位址:http://www.cnblogs.com/johntsai/p/4659400.html