2012-08-07 35 views
1

我正在瀏覽一些Java代碼,並且看到很多抽象類,其中不包含任何內容。在什麼情況下你會更喜歡沒有方法的抽象類?

對於如。像這樣 -

public abstract class Processor 
{ 

} 

雖然他們有具體的實現類。在什麼情況下這些抽象類是有意義的?

+0

對於泛型你可以使用<?擴展處理器> – bluesman 2012-08-07 18:33:02

+1

不適合某些有用! – 2012-08-07 18:34:24

+1

你可以看看這個主題:http://stackoverflow.com/questions/1749477/are-empty-abstract-classes-a-bad-practice-and-why – 2012-08-07 18:35:55

回答

2

Abstract當你有一些邏輯對所有可能的實現類都是通用的時候使用類。

寫作與裏面什麼都沒有,延長其不同類別的Abstract class是非常useless.The只difference是,你可以使用相同的handle所有具體的類。

0

其中一種情況是,如果你不想讓你的類使用new關鍵字實例化,那麼你可以定義它是抽象的。

+2

如果有什麼與一個沒有方法的類有關? – 2012-08-07 18:35:36

+0

處理器p =新處理器(){};' – 2012-08-07 18:36:41

+0

@MisrableVariable:不確定你的意思? – kosa 2012-08-07 18:37:00

0

在一些庫中,他們將使用反射來查找這些標記抽象類的實現。這也是抽象類名稱本身的代碼文檔。

+0

'interfaces'被用作標記。出於顯而易見的原因,對於(具體)課程可以有多個標記。 – 2012-08-07 18:36:33

3

國際海事組織(IMO),當你想創建一個具有所有子類通用的行爲和狀態的基類時,抽象類優先於接口。我不確定空的抽象類比接口更有用。通常,標記接口是空的。

+0

是。我認爲標記界面可以達到同樣的目的。 – CodeBlue 2012-08-07 18:41:08

+0

像[**'Cloneable' **](http://docs.oracle.com/javase/6/docs/api/java/lang/Cloneable.html)? – 2012-08-07 21:47:30

相關問題