我想知道下一件事是否可能实现:Java本地类和接口
可以说我有2个接口,而他们每个人都有1个功能标题。 例如,iterface1具有函数g(...)和接口2具有函数f(...)
现在,我使一个类并声明这个类实现这些2个接口。 在课堂上,我尝试做下一件事:
我开始实现函数g(...),并在它的实现中我做了一个实现interface2的本地类,并且向这个类添加了f(...)的实现。 )。
我想知道下一件事是否可能实现:Java本地类和接口
可以说我有2个接口,而他们每个人都有1个功能标题。 例如,iterface1具有函数g(...)和接口2具有函数f(...)
现在,我使一个类并声明这个类实现这些2个接口。 在课堂上,我尝试做下一件事:
我开始实现函数g(...),并在它的实现中我做了一个实现interface2的本地类,并且向这个类添加了f(...)的实现。 )。
我不太清楚你的意思。我想像的是这样的:
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
的实现。你仍然需要实现f
在MyClass
:
MyClass.java:11: MyClass is not abstract and does not override abstract method
f() in Interface2
这就是我的意思。谢谢! – user550413 2011-04-13 11:14:41
这正是我理解这个问题的原因 - 不,它不是“合法的”(意思是“MyClass”仍然必须为'f'提供一个实现,除非它是抽象的) – 2011-04-13 11:15:40
是的,这是合法的。然而,类没有实现一个接口,因为内部类实现了它。该类必须明确实现接口或将其声明为抽象。
是的,这是合法的。在你给出的例子中,你的类应该实现这两个接口的所有方法,并且你的本地类应该实现interface2的所有方法。
而不是文字,示例代码将是非常宝贵 – adarshr 2011-04-13 11:07:18
试试看? – WhiteFang34 2011-04-13 11:07:38
你的编译器说什么? – Puce 2011-04-13 11:07:47