我想知道下一件事是否可能实施:
让我们说我有2个接口,而每个接口都有1个功能头。 例如,iterface1有函数g(...),interface2有函数f(...)
现在,我创建一个类并声明此类正在实现这两个接口。 在课堂上我尝试做下一件事:
我开始实现函数g(...)并在其实现中我创建了一个实现interface2的本地类,我向这个类添加了f(...)的实现。
答案 0 :(得分: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
的实现。您仍需要在f
中实施MyClass
:
MyClass.java:11: MyClass is not abstract and does not override abstract method
f() in Interface2
答案 1 :(得分:2)
是的,这是合法的。但是,类没有实现接口,因为内部类实现了它。该类必须显式实现接口或将其自身声明为抽象。
答案 2 :(得分:1)
是的,这是合法的。在您给出的示例中,您的类应该实现两个接口的所有方法,并且您的本地类应该实现interface2的所有方法。