2011-04-13 70 views
2

我想知道下一件事是否可能實現:Java本地類和接口

可以說我有2個接口,而他們每個人都有1個功能標題。 例如,iterface1具有函數g(...)和接口2具有函數f(...)

現在,我使一個類並聲明這個類實現這些2個接口。 在課堂上,我嘗試做下一件事:

我開始實現函數g(...),並在它的實現中我做了一個實現interface2的本地類,並且向這個類添加了f(...)的實現。 )。

+1

而不是文字,示例代碼將是非常寶貴 – adarshr 2011-04-13 11:07:18

+3

試試看? – WhiteFang34 2011-04-13 11:07:38

+3

你的編譯器說什麼? – Puce 2011-04-13 11:07:47

回答

4

我不太清楚你的意思。我想像的是這樣的:

interface Interface1 
{ 
    public void g(); 
} 

interface Interface2 
{ 
    public void f(); 
} 

class MyClass implements Interface1, Interface2 
{ 
    @Override 
    public void g() 
    { 
     class InnerClass implements Interface2 
     { 
      @Override 
      public void f() 
      { 
      } 
     } 
    } 
} 

這是你的意思嗎?

在這種情況下,答案是否定的。內部類(InnerClass)工作正常,但它不算作外部類的f的實現。你仍然需要實現fMyClass

MyClass.java:11: MyClass is not abstract and does not override abstract method 
f() in Interface2 
+0

這就是我的意思。謝謝! – user550413 2011-04-13 11:14:41

+0

這正是我理解這個問題的原因 - 不,它不是「合法的」(意思是「MyClass」仍然必須爲'f'提​​供一個實現,除非它是抽象的) – 2011-04-13 11:15:40

2

是的,這是合法的。然而,類沒有實現一個接口,因爲內部類實現了它。該類必須明確實現接口或將其聲明爲抽象。

1

是的,這是合法的。在你給出的例子中,你的類應該實現這兩個接口的所有方法,並且你的本地類應該實現interface2的所有方法。