接口嵌套并不神秘,把嵌套的interface看作其他class或interface的普通元素(member element)就可以理解了。需要特别注意的是域修饰符qualifier,嵌套接口的qualifier和普通的完全一样,严格遵循其规则。
作为其他class或interface的元素的嵌套接口,无论其qualifier是public或private,都可以在同一个域中实现为带任何修饰符的class:
如上面的嵌套接口D是private,但是它的两个实现类DImp和DImp2分别是private和public。
作为其他class或interface的元素的嵌套接口,无论其qualifier是public或private,都可以在同一个域中实现为带任何修饰符的class:
class
A
{
interface B {
void f();
}
public class BImp implements B {
public void f() {}
}
private class BImp2 implements B {
public void f() {}
}
public interface C {
void f();
}
class CImp implements C {
public void f() {}
}
private class CImp2 implements C {
public void f() {}
}
private interface D {
void f();
}
private class DImp implements D {
public void f() {}
}
public class DImp2 implements D {
public void f() {}
}
public D getD() { return new DImp2(); }
private D dRef;
public void receiveD(D d) {
dRef = d;
dRef.f();
}
}
interface B {
void f();
}
public class BImp implements B {
public void f() {}
}
private class BImp2 implements B {
public void f() {}
}
public interface C {
void f();
}
class CImp implements C {
public void f() {}
}
private class CImp2 implements C {
public void f() {}
}
private interface D {
void f();
}
private class DImp implements D {
public void f() {}
}
public class DImp2 implements D {
public void f() {}
}
public D getD() { return new DImp2(); }
private D dRef;
public void receiveD(D d) {
dRef = d;
dRef.f();
}
}
如上面的嵌套接口D是private,但是它的两个实现类DImp和DImp2分别是private和public。