抽象類和接口的區別
許多朋友搞不懂Java中抽象類和藉口的區別,今天我們就來分析一下。
操作方法
(01)接口,在表面上是由幾個沒有主體代碼的方法定義組成的集合體,有唯一的名稱,可以被類或其他接口所實現(或者也可以説繼承)。
(02)接口是一組規則的集合,它規定了實現本接口的類或接口必須擁有的一組規則。體現了自然界“如果你是……則必須能……”的理念。接口是在一定粒度視圖上同類事物的抽象表示。注意這裏我強調了在一定粒度視圖上,因為“同類事物”這個概念是相對的,它因為粒度視圖不同而不同。
(03)關於抽象類與接口,如果單從具體代碼來看,對這兩個概念很容易模糊,甚至覺得接口就是多餘的,因為單從具體功能來看,除多重繼承外(C#,Java中),抽象類似乎完全能取代接口。但是,難道接口的存在是為了實現多重繼承?當然不是。抽象類和接口的區別在於使用動機。使用抽象類是為了代碼的複用,而使用接口的動機是為了實現多態性。所以,如果你在為某個地方該使用接口還是抽象類而猶豫不決時,那麼可以想想你的動機是什麼。
(04)總而言之,接口與抽象類的區別主要在於使用的動機,而不在於其本身。而一個東西該定義成抽象類還是接口,要根據具體環境的上下文決定。再者,接口和抽象類的另一個區別在於,抽象類和它的子類之間應該是一般和特殊的關係,而接口僅僅是它的子類應該實現的一組規則。(當然,有時也可能存在一般與特殊的關係,但我們使用接口的目的不在這裏)如,交通工具定義成抽象類,汽車、飛機、輪船定義成子類,是可以接受的,因為汽車、飛機、輪船都是一種特殊的交通工具。再譬如Icomparable接口,它只是説,實現這個接口的類必須要可以進行比較,這是一條規則。如果Car這個類實現了Icomparable,只是説,我們的Car中有一個方法可以對兩個Car的實例進行比較,可能是比哪輛車更貴,也可能比哪輛車更大,這都無所謂,但我們不能説“汽車是一種特殊的可以比較”,這在文法上都不通。
(05)Android中ListView作為開發最常用的組件之一,我們經常要使用自定義的Adapter來達到我們的目的,因此寫一個自己的BaseAdapter是很常見的事情,而重寫BaseAdapter的目的就是為了少寫重複代碼和實現自己想要的getview()函數,這裏我們看看這個抽象類:
(06)我們再來看看接口,接口的目的是為了讓實現接口的對象一不同方式實現同一方法,而不是為了減少重複代碼,這裏舉一個Cache的代碼,這一接口是制定了緩存對象的規則,即實現緩存的對象必須要實現接口裏定義的方法,這樣才能保證緩存功能的完整:
-
如何使用Flash繪製皮卡丘動畫
Flash中文翻譯為“動畫”的意思,是專門用來製作動畫的軟件工具。現在,我們以實際的例子出發看看如何使用Flash軟件繪製皮卡丘圖案吧。操作方法(01)新建文檔雙擊【Flash圖標】,打開軟件。在軟件界面點擊【文件】---【新建】,會彈出的新建文檔窗口點擊【ActionScript3....
-
頭像製作之可愛的猴子
萌萌噠的猴子頭像是我們都喜歡的,也有很多人喜歡拿到它來做我們一些運用的頭像,小編對於萌萌噠的猴子頭像也是很喜愛的,那麼,我們該如何製作可愛的猴子頭像呢?小編為你詳細介紹下:頭像製作之可愛的猴子。工具/材料ai軟件電腦猴子操作方法01首先,我們打開我們的電腦,接...
-
如何設置路由器IP地址
大部分家用路由器的默認IP地址是,如果我們想給路由器換個IP,怎麼設置呢?操作方法(01)首先打開網絡連接,雙擊本地連接,查看計算機IP地址(02)如果是192.168.1.x,則跳過後續步驟,如果不是的,則手動修改為(03)然後在網頁上打開,輸入路由器登錄賬號和密碼【可以在路由器上面查看初...
-
÷除號怎麼打出來
在工作中常常會使用到除號做文件,那麼除號應該怎麼打出來呢?請看下面解析。操作方法(01)方法一:打開word文檔,點擊“插入”》“符號”。(02)點擊“÷”號即可。(03)方法二:在輸入法裏打“÷”即可。...