2012-11-12 113 views
-3

可能重複:
Interface or abstract class?
Abstract and Interface in java抽象類和接口的Java

我仍然在Java中的學生,我遇到了抽象類和接口。

現在,當你創建一個抽象類,你寫的方法是這樣的:

public abstract void something(); 

但是當你在你的界面創建一個方法,它看起來是這樣的:

public void something(); 

現在即時通訊不是盲目的我可以看到有一些區別,我也知道你是一個抽象類extend和你的一個接口implement

但有人能告訴我什麼區別可能是一個例子,你會使用一個在另一個?

+0

對不起,請刪除我的帖子然後:( –

+2

避免提出有關Java基礎知識的問題,Google總是在那裏幫助你,只問你是否做了你的研究,但仍然不明白,但**做狀態在你的問題中,你發現如此等等的解釋,但你仍然感到困惑。 – ADTC

+0

@ADTC謝謝你,我會記得在那裏。 –

回答

2

這兩個例程沒有區別。區別在於abstract類可以包含用於所有實現的通用邏輯,而接口不能。

+0

謝謝你的迴應! –

2

「摘要」基本上意味着該方法沒有實現。實現必須由子類提供。因此,不能創建具有抽象方法的類的實例。

現在Java中的接口只是方法簽名的集合。他們不能通過設計包含實現。因此,abstract關鍵字將是多餘的。不能創建接口的實例,只能創建實現該接口的具體類。

+0

C中的接口_something_header文件嗎? :)順便說一下,我可以創建抽象類的「實例」,但它們應該引用擴展具體類的實例。像'AnAbstractClass x = new AConcreteClassExtendingAnAbstractClass();'(對不起,我不知道如何恰當地解釋這個問題,因此引用了嚇唬人的引號。) – ADTC

+0

@ADTC接口就像是一個指定對象支持什麼操作的契約。您可以使用接口作爲函數參數,例如[Collections.sort(List list)](http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#排序(java.util.List中))。另一方面,C中的頭文件可以包含任意函數定義,而不一定只包含抽象類方法的定義。頭文件甚至可以包含實現(內聯函數) – Sjlver