2012-05-04 110 views
-1

爲什麼我們使用Interface?何時使用抽象類和接口?

當我們實現一個接口時,我們必須爲該接口的方法編寫定義。 那麼,需要實現的接口是什麼?我們可以直接在課堂上寫出方法。

謝謝:)

+0

http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html和http://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html – 2012-05-04 05:54:30

+0

請讓你的問題更加清楚。你的意思是「哪裏」?你的意思是,何時使用Abstract類以及何時使用Interface? – Garbage

+0

可能的重複[你能幫我理解一個實際例子中的用法抽象類vs接口?](http://stackoverflow.com/questions/627199/can-you-help-me-understand-in-a-practical -example-the-usage-abstract-classes-vs) – 2012-05-04 05:55:02

回答

0

已其中使用由N個classes.If定義的一種方法是從每一類使用界面不同。

假設一個方法類似於50個類,另外50個類有不同的行爲意味着使用Abstract類。在這裏定義方法。

對於前50個類和剩下的50個類使用不同的行爲,因此根據類行爲覆蓋現有的方法。
實施例

Interface Graphics 
{ 
    void size(); 
    void draw(); 

} 

Class Rectangle implements Graphics 
{ 
    void size() 
    { 
     x=10; 
     y=10; 
    } 
    void draw() 
    { 
     ..... 
    } 

} 
class Triangle implements Graphics 
{ 
    void size() 
    { 
     x=10; 
     y=10; 
    } 
    void draw() 
    { 
     ..... 
    } 

} 

因此兩者的大小是相同的這兩個類然後使用抽象

abstract class Graphics 
{ 
    void size() 
    { 
     x=10; 
     y=10; 
    } 
    abstract void draw(); 

} 

然後,如果任何類擴展這個類的大小是相似的,只是限定draw() 如果某些類需要不同的位置然後覆蓋大小。

0

這更像是面試問題 -

Decission有關何時使用的是什麼角落找尋長期和是一個有很多具有其觀點或備份這樣或那樣的想法的人這些討論的一個。我認爲幾乎每次都有一條基本規則:如果您可以聲明「A是B」,則使用抽象類和繼承。使用接口,如果您可以使語句「A能夠[做]爲」,或者抽象出什麼是類,接口可以做什麼類。

例如,我們可以說一個三角形是一個多邊形,但說三角形能夠成爲一個多邊形是沒有意義的。

無論如何,以往的經驗法則是:使用您的常識。有時界面只是適合好得多,即使上述規則告訴你相反的情況,如果這只是使用界面(當然考慮到後果)。

1

一個示例可能對您有用,請參閱下面的場景。

1.class A extends B{ 
.. 
.. 
.. 
} 

當A擴展B和你正在創建一個新的C類,你不能讓一個如果你在B和它添加一個新的方法爲B所以go for Interface.

2.class A implements B { 
.. 
.. 
} 

沿着延伸C( B)由100個類實現,難以在所有類中實現新方法,所以去抽象類,並添加了框架實現的新方法。

進一步的幫助閱讀Joshua Bloch的Effective Java