2011-08-24 176 views
0

我想,當一個類實現一個接口,它是說,它「可以做」什麼在interface.I定義我也下印象是「是」或符號「類型」是類層次結構,這意味着一類從超類繼承。我的理解是否正確?通過實現一個接口,類是否成爲該接口的「類型」?

+0

基於這裏的文章:http://codeofdoom.com/wordpress/2009/02/12/learn-this-when-to-use-an-abstract-class-and-an-interface/。它說當一個類擴展一個抽象類時,它建立了「是A」關係,但是它與接口建立了「可以做」關係。如果抽象類和接口都建立「IS A」關係,那麼接口的用法是什麼?讓我們不要進入多重繼承和其他基本的東西.... – user325643

+0

不知道爲什麼這是downvoted。人們至少應該評論。 –

回答

3

從標題的問題,我會說沒有。

已經有答案說是通過閱讀它指出了Java語言規範在使用的instanceof,但顯示這一點。

兩個參考類型,如果相同的運行時類型: 他們都是類或兩種接口類型,是由同一個類加載器定義,並具有相同的二進制名稱

而且一實現接口的類將不會收到接口的二進制名稱。

2

是。這從使用instanceof運營商是顯而易見的:

 interface I { } class A implements I { } ... static boolean isAnI(Object obj) { return (obj instanceof I); } 

這裏,呼籲isAnI(new A())將返回true

編輯:理解題意後好轉,我認爲這歸結爲正式定義-A在Java中。維基百科有關一般OO定義的文章here。從這個基於繼承層次的角度來看,我會將我的答案改爲否,同意Farmor的答案。

1

我不能完全肯定我明白你的問題。但是,接口確實說明了類「可以做什麼」,但是您也可以投射該接口的對象並運行接口的方法。工作中的多態性。

相關問題