Java本地类和接口

时间:2011-04-13 11:04:10

标签: java interface local-class

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

让我们说我有2个接口,而每个接口都有1个功能头。 例如,iterface1有函数g(...),interface2有函数f(...)

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

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

3 个答案:

答案 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的所有方法。