2014-06-11 70 views
3

給出一個抽象類,只有抽象方法抽象類,這將是這和接口之間的區別是什麼?只有抽象方法

我能看到的唯一的區別是涉及到使用多重繼承與接口的能力。

是否有在這種情況下,這將決定是否要做到這一點,或使用一個接口,而不是其他重要的區別是什麼?

+1

我會稱之爲**糟糕的設計**。 –

+0

Java 8或Java少於8? –

+0

你可以有靜態方法 – shmosel

回答

0
  1. 抽象類是指從繼承,並且當一個類從另一個繼承它意味着有2類之間的密切關係。例如,如果我們有一個叫做「Canine」的抽象基類,任何派生類都應該是屬於犬類家族的動物(如狗或狼)。我們使用「should」這個詞的原因是因爲Java開發人員必須確保維護關係。

另一方面,接口本身和實現接口的類之間的關係不一定強。例如,如果我們有一個名爲「House」的類,那個類也可以實現一個名爲「AirConditioning」的接口。讓空調不是衆議院的重要組成部分(儘管有些人可能認爲這一點),而且這種關係不如「TownHouse」班和「House」班之間的關係或者來自「House」類的「公寓」類。

由於聯排別墅是一種家的,這種關係是非常強的,而且會通過繼承而不是接口被更加適當定義。

因此,我們可以說,當有抽象類和類,會從中獲得之間有很強的關係的抽象類會更適合總結一下第一點。同樣,這是因爲抽象類與繼承密切相關,這意味着強烈的關係。但是,使用接口時,接口和實現接口的類之間不需要有強大的關係。

0

宣佈非公開方法爲抽象的能力...設置抽象類與其他家長派生並通過提供父母的方法給兒子的能力。要確定你的構造函數將獲得的能力和通過該力的派生類「知道」某些數據

+0

*給定​​一個只有抽象方法的抽象類,這與接口之間會有什麼區別?*事實上,有這樣一個抽象類的糟糕設計:1)如果從另一個類繼承,那麼從這個抽象類沒有什麼用處,2)如果你確定了子類的構造函數,我會說它比接口相比更受限制,而不是一個好處; 3)自Java 8以來,你可以在接口中使用默認方法,您可以爲接口中的方法定義行爲。 –