2011-10-31 136 views
1

我真的很困惑,而且我已經閱讀了關於該主題的TON問題,並且我無法專門指出接口可以做什麼,抽象類無法做到。抽象類,構造函數和接口

+0

有很多這樣的問題的答案。你最好在已經回答的問題中提問。簡單的回答,但:接口是實現的,而不是繼承。 Java沒有多重繼承,但可以實現多個接口。 – merryprankster

+0

@merryprankster - 你不能問一個問題的問題,只能回答它。低代表用戶無法評論現有的問題/答案。 – Flexo

回答

9

一個類可以實現多個接口,但不能實現多個抽象類。

+1

實現抽象類?應該延長..? –

+0

@KugathasanAimaimaran是對的。 – RockyMM

0

一個抽象類可以接口可以做的所有事情。然而,這是不正確的。

+0

不是,你錯過了這一點。接口就像一個合同。抽象類更具體一些。 – RockyMM

0

抽象類可以包含抽象方法,抽象屬性以及其他成員(就像普通類一樣)。 接口只能包含抽象方法,屬性,但我們不需要放置抽象和公共關鍵字。 Interface中定義的所有方法和屬性默認爲public和abstract。 我們可以看到抽象類包含私有成員,我們也可以把一些方法與實現也一起。但是在接口的情況下,只允許方法和屬性

2

抽象類還可以包含功能實現,而不是僅僅規定必須由繼承類

3

接口本身不能做任何事情來實現的功能。它只是定義了提供某些功能的類和調用者之間的契約類型。

抽象類是定義爲abstract的類。如果類至少有一個抽象方法(即沒有實現的方法),它必須被定義爲抽象。但是抽象類也可以包含實現。

接口不能包含實現。只有抽象方法和常量(靜態最終字段)。

類可以實現多個接口並只擴展一個類(包括抽象類)。

我希望這會有所幫助。

0

接口和抽象類幾乎都是一樣的使用接口的主要區別是我們無法定義方法的主體,但使用抽象類我們可以在抽象類內部或在實現它時定義方法的主體。 e.g

Interface abc() 
{ 
string xyz(); 
} 

abstract abc() 
{ 
string xyz() 
{ 
// define body 
} 
} 
or 
abstract abc() 
{ 
string xyz(); 
} 
0

一個抽象類是一類 - 它定義的一些行爲一類對象的實現的全部或部分,但對具體子類提供一些擴展點。

接口是一種類型 - 它定義了由實現接口的任何類提供的操作集合。

你幾乎在問是否有任何候選人可以做的工作描述不能。創建一個抽象類說'這是一些實現的模板'。創建一個接口說'我期待一個對象提供這些功能'。您可以在抽象類中使用虛擬方法來實現類型的某些方面,但意圖是不同的。

1

抽象類是部分實現的類,將通過具體類(非抽象)進行擴展,以實現。

實施例: enter image description here

這個例子並不意味着該子類必須實現那些方法(因爲它實現接口時發生)。你可以聲明一個子類摘要,並且稍後將由其他子子類完成實現。 (例如:船可以具有「SpeedBoat」和FisshingBoat的子類,並且可以以不同方式實施honk())

界面是類對外界的眼睛。哪些類可以在界面中聲明,但在類中實現。

一個類可以實現多個接口,但只能擴展一個類。 見的接口這個小例子:

enter image description here

正如你可以看到,當我們使用接口,我們可以有很多的靈活性。有些敵人可以做一些英雄也可以做的事情(DarkKnight可以投擲箭頭)。 我希望你現在感受到抽象類和接口的區別。

記住這個關於接口和抽象類:

  • 接口不要有變數,只是未實現的方法(抽象方法隱含的)

  • 類實現接口必須有接口的所有方法在其身上

  • 一個類只能擴展一個類但實現多個接口

  • 如果一個類有一個抽象方法,它必須被聲明爲抽象的。

  • 抽象類可以實現接口

  • 接口可以擴展其他接口(不止一個)

我不知道如果我忘了什麼東西,我希望這個信息幫助。