2

我想知道下一件事是否可以实施:

假设我有 2 个接口,而每个接口都有 1 个函数头。 例如,iterface1 具有函数 g(...),interface2 具有函数 f(...)

现在,我创建了一个类并声明该类正在实现这两个接口。在课堂上,我尝试做下一件事:

我开始实现函数 g(...),在它的实现中,我创建了一个实现 interface2 的本地类,并在这个类中添加了 f(...) 的实现。

4

3 回答 3

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
于 2011-04-13T11:09:21.833 回答
2

是的,这是合法的。然而,一个类没有实现一个接口,因为一个内部类实现了它。该类必须显式实现接口或将其自身声明为抽象。

于 2011-04-13T11:08:12.703 回答
1

是的,这是合法的。在您给出的示例中,您的类应该实现两个接口的所有方法,而您的本地类应该实现 interface2 的所有方法。

于 2011-04-13T11:08:23.253 回答