我搜索了谷歌,但找不到一个清楚我怀疑的具体例子。假设我有一个带嵌套接口的父接口。
E.g
public interface A {
.. methods
interface B {
.. methods
}
}
如果一个类实现了接口A,那么该类内部是否实现了嵌套接口B,这意味着我是否应该覆盖接口B的方法呢?
答案 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。任何静态的东西都不能被继承。因此,嵌套接口必须单独实现。