【问题标题】:Java local classes and interfacesJava 本地类和接口
【发布时间】:2011-04-13 11:04:10
【问题描述】:

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

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

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

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

【问题讨论】:

  • 比文字更有价值的是示例代码

标签: java interface local-class


【解决方案1】:

我不太清楚你的意思。我正在想象这样的事情:

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 的实现。您仍然需要在MyClass 中实现f

MyClass.java:11: MyClass is not abstract and does not override abstract method
f() in Interface2

【讨论】:

  • 这正是我的意思。谢谢!
  • 这正是我对问题的理解——不,它不“合法”(意味着MyClass 仍然必须为f 提供实现,除非它是抽象的)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 2012-07-14
      • 2011-01-25
      相关资源
      最近更新 更多