2010-09-30 71 views
1

請用純英文解釋我們爲什麼需要以及爲什麼在面向對象開發中使用Interface。純英文界面

我很困惑。

[+]我正在研究Java。如果有的話,請提供Java示例代碼。

謝謝大家。

+3

你四處搜尋? Stackoverflow有很多這樣的問題的答案 – Bozho 2010-09-30 09:55:53

+0

粗略重複http://stackoverflow.com/questions/3826254/why-should-you-ever-have-to-care-whether-a-type-is-an-interface -or-a-class/3826450 – 2010-09-30 12:45:41

+0

「爲什麼我們需要以及爲什麼使用Interface」看起來非常像「爲什麼類現在被定義爲界面?」。 – sleske 2010-09-30 13:19:03

回答

0

你的意思是我們爲什麼需要接口,或者爲什麼我們不使用抽象類? 接口提供:

1)抽象和依賴倒置。高水平的班級不關心他們使用的具體的低級班。你有更多的棄權,你獲得更多的靈活性。例如,您可以完全重寫與數據庫一起工作的級別,並且保持應用程序的其他級別不變,因爲它們可以與接口一起使用,但不能與具體實現一起使用。

2)在Java接口提供了多重繼承

1

您正在提供interface所要做的事情,它將如何完成,這將在實施中進行介紹。

假設有一個接口驅動程序,你將聲明一個方法drive();

現在假設一個汽車司機使用這種方法,那麼他可以在那裏寫他的代碼。
如果一名飛行員實施驅動方法,那麼他的代碼..

我希望它清楚。

+1

接口名字應該是'Driver',而不是'Drive'。 – whiskeysierra 2010-09-30 10:19:52

+0

@威利耶,更新,驅動器是司機知道的方法。 – 2010-09-30 10:21:27

2

你檢查,以Java接口部分你有一個解釋,一些Java示例

http://www.javabeginner.com/learn-java/java-abstract-class-and-interface

例1:下面是一個Shape接口

interface Shape { 

    public double area(); 
    public double volume(); 
} 

的例子下面是一個實現Shape接口的Point類。

public class Point implements Shape { 

    static int x, y; 
    public Point() { 
     x = 0; 
     y = 0; 
    } 
    public double area() { 
     return 0; 
    } 
    public double volume() { 
     return 0; 
    } 
    public static void print() { 
     System.out.println("point: " + x + "," + y); 
    } 
    public static void main(String args[]) { 
     Point p = new Point(); 
     p.print(); 
    } 
} 
+2

同意。接口是有用的,因爲它們使*多態*成爲可能。即在某個你不知道確切類型的對象上調用一個函數,但你知道它實現了一些接口。 – Sjoerd 2010-09-30 09:54:34

1

下面是JavaRanch的的Java Beginner FAQ部分entry。這可能會有所幫助。 此外,請去JavaRanch。對於Java初學者來說,特別是沒有其他更好的替代品。

1

一個接口用來描述兩個對象有共同之處但實現不同。 mybook給出的例子是鴨子。

假設u有2個鴨

  • 正常活一個

  • 和木質一個

並與方法的接口IFLY飛();

兩者都能飛。所以Fly方法進入界面。因爲當你實現一個接口時,你必須在這個接口中實現這些功能。 (這就像是一份合同!)

所以鴨子實現了IFly,並且在它的飛行方法中,它把所有寫到控制檯上的信息寫成:我可以飛行。

雖然木鴨說「我不能飛」。

然後當u做到這一點:

(C#抱歉,不知道JAVA)

IFLy duck = new Duck() duck.fly(); -- This will write I Can fly. Ifly woodenduck = new WoodenDuck() woodenduck.fly()

,說我不能飛。

簡而言之,A接口描述了一個對象有什麼實現,所以你可以把它看作是一個契約。

希望這樣做比較清楚一些,一開始也有很多麻煩。

(srry不能說明真正的好)

+0

對不起,您能否向我解釋爲什麼我們需要首先加入合同,而我們只能在自己的班級中實施個別方法。我讀過很多文章和很好的java書籍。不過,我並不滿意。我希望有人能夠以不同的故事解釋爲什麼界面應該存在。你的回答可能會啓發別人。 – 2010-10-01 02:44:32

+0

好吧,讓我這樣試試吧,接口在OOP(面向對象編程)中非常重要,因爲,允許好的封裝! (這也回答了你的問題)一個對象只能看到接口,並且不必關心該對象如何實現或處理該函數。接口的另一個很好的例子是它們可以被團隊用來限制其他程序員實現特定的功能。 (合同)因爲如果他或她的那個班級沒有實現接口,編譯器會抱怨。並且該項目不會編譯。希望這件事清理一下。 – Emerion 2010-10-01 07:06:42

1

interface(在Java中)是一個uninstatiable抽象類(它沒有構造函數),提供公共方法是繼承他們必須在所有子類執行。

此外,具有繼承的一個優點是便於與multiple inheritance

0

老實說,你應該對Java的讀好書投入時間。我推薦Herbert Schildt的Java Complete Reference。

開始通過了解OO上下文中的下列術語和它們的意義:一個類型

  • 實現出版

    1. 類型
    2. 合同
    3. 多態性