2010-11-10 80 views
0

我有這個麻煩。我正在和一些庫一起工作,我需要創建一個接口類。Java - 抽象問題

  • 如果我做this.createITextArea()它會創建對象。
  • 如果我做ITextArea area = new ITextArea()我不能,因爲這個類是抽象的。

事實上,我需要發送一個函數。但用第一種方法我不能,或者我不知道如何獲得該類的變量。我怎麼能通過它?

我需要像area=this.createITextArea()出頭,這樣我就可以在函數中使用變量區...

希望這個問題是清楚的...

回答

4

那麼,什麼是這個問題:

ITextArea area = this.createITextArea(); 

+0

YEAH!這個石頭。謝啦! – markzzz 2010-11-10 12:25:58

2

你並不需要創建一個接口的實例。你需要創建一個類的實例,其中實現了表示接口。查找或編寫這樣的實現,實例化該實現,然後將其分配給您的變量。

3

儘管這個問題是一個有點不清楚:

例如爲:

ITextArea area = this.createITextArea(); 
someObj.someMeth(area); 

或內聯:

someObj.someMeth(this.createITextArea()); 

我建議進一步閱讀的Java接口。

2

一個類的實例是從來沒有一個接口。一個方法可以返回一個接口類型,但是通過該方法獲得的「thing」總是一個實現這個接口的對象。

一些簡單的例子來說明它:

public static main(String[] args) { 
    List list = createList(); 
} 

public static List createList() { 
    return new ArrayList(); 
} 

createList該方法返回一個接口類型(List它返回一個實類(ArrayList)的一個實例。因此最後,局部變量list持有對此實例ArrayList的引用。

回到你的例子:假設你有一個接口

public interface ITextArea { /* methods */ } 

,並希望創建一個對象「實現此接口」,那麼你就需要像

public class TextArea implements ITextArea { /* methods */ } 

和你」其他類我想創建這個具體類的實例。

+0

一個很好的解釋!謝啦! – markzzz 2010-11-10 12:50:14