2011-04-13 73 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的所有方法。