2010-09-27 35 views

回答

1

一般:

接口應該在任何情況下使用,其中最重要的是階級做什麼,不一定是什麼。例如,一個可以創建其自身副本的類可以做許多其他事情,但是當您只關心能夠複製該對象時,您只關心該對象實現ICloneable。另外,當不共享一組功能的實現時,接口非常有用;例如,輸出計算結果的能力可以是文件,控制檯或網絡的形式。這三個實現完全不同,但它們都可以看起來與需要IOutputWriter的類相同。

摘要通常用於共享代碼。與接口不同,抽象類可以指定子級可以使用的方法邏輯。 BitmapImagePrinter專門用於位圖文件類型,但它需要與JpegImagePrinter相同的邏輯來實際訪問打印機;所以,這個邏輯可以進入AbstractImagePrinter。當一個班級比什麼時候更重要時,摘要也很有用。 CheckingAccount和SavingsAccount都是BankAccounts,即使它們的行爲不同。

還有一些其他的特殊情況,你必須使用其中一種,但總的來說,這是主要的區別。

0

有了你聲明的行爲,而不提供一個實現的接口。這是用作方法參數的最好方法,因爲您依賴於行爲,而不是依賴於給定的實現(即使是部分抽象類)。

抽象類最適合用作基類,提供了一組實現接口的類所使用的通用功能。我會建議把這個基本的抽象類作爲一個內部的實現助手。

0

這已經被討論多次指this -

,當你想通過所有的類繼承的一些默認行爲,因爲它使更多的意義則使用抽象類實現抽象類。

實現接口,當你想只有一些你的類有一些特定的功能,而不需要它被繼承。

相關問題