实现声明嵌套接口的Parent接口时会发生什么

时间:2016-09-23 09:14:06

标签: java interface nested implements

我搜索了谷歌,但找不到一个清楚我怀疑的具体例子。假设我有一个带嵌套接口的父接口。

E.g

public interface A {
    .. methods

    interface B {
        .. methods
    }
}

如果一个类实现了接口A,那么该类内部是否实现了嵌套接口B,这意味着我是否应该覆盖接口B的方法呢?

3 个答案:

答案 0 :(得分:2)

由于接口没有方法实现,因此在实现外部接口时不需要实现嵌套接口 内部接口更像是位于外部接口的命名空间中的接口。

总结一下:接口与你可以处理它们之间没有任何关系,因为你可以使用两个独立的接口。唯一的关系是您只能通过调用A.instanceofB.method();来使用接口B.

接口:

interface OuterInterface {
    String getHello();

    interface InnerInterface {
        String getWorld();
    }
}

示例:

static class OuterInterfaceImpl implements OuterInterface {
    public String getHello() { return "Hello";}
}

public static void main(String args[]) {
    new OuterInterfaceImpl().getHello(); // no problem here
}

示例2:

static class InnterInterfaceImpl implements OuterInterface.InnerInterface {
    public String getWorld() { return "World";}
}

public static void main(String args[]) {
    new InnerInterfaceImpl().getWorld(); // no problem here
}

示例3:

static class OuterInterfaceImpl implements OuterInterface {
    public String getHello() { return "Hello"; }

    static class InnerInterfaceImpl implements InnerInterface {
        public String getWorld() { return "World!"; }
    }
}

public static void main(String[] args) {
    OuterInterface oi = new OuterInterfaceImpl();
    OuterInterface.InnerInterface ii = new OuterInterfaceImpl.InnerInterfaceImpl();
    System.out.println(oi.getHello() + " " + ii.getWorld());
}

答案 1 :(得分:0)

没有。 必须实现内部接口。

语法将是

Class C implements A, A.B{
// add methods here
}

如果只实现A,只需在没有B接口方法的情况下声明A方法即可。

答案 2 :(得分:0)

在basic中,在接口中,除方法声明之外的任何东西都是public static。任何静态的东西都不能被继承。因此,嵌套接口必须单独实现。