java嵌套接口

java嵌套接口

  

package object;

class A {
  //嵌套在类中的接口,可以被private,protected,default和public四种权限修饰 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 E { interface G { void f(); } // 多余的 "public",接口中所有的成员都是public,其中成员方法都是public abstract(可以有个默认方法),属性都是public static final,接口本身可以是default和public public interface H { void f(); } void g(); // 不能声明为private,理由同上 //! private interface I {} } public class NestingInterfaces { public class BImp implements A.B { public void f() {} } class CImp implements A.C { public void f() {} } //不能实现一个私有接口,除非在接口所属的类内部 //! class DImp implements A.D { //! public void f() {} //! } class EImp implements E { public void g() {} } class EGImp implements E.G { public void f() {} } class EImp2 implements E { public void g() {} class EG implements E.G { public void f() {} } } public static void main(String[] args) { A a = new A(); // 无权获取 A.D: //! A.D ad = a.getD(); // A.D类型不能自动向下转换为实现类: //! A.DImp2 di2 = a.getD(); // 更不能调用私有接口的方法 //! a.getD().f(); // Only another A can do anything with getD(): A a2 = new A(); a2.receiveD(a.getD());//要使用D 只能把它交给有权使用它的对象 } } ///:~

 总结:

  1. java中接口可以嵌套在类中,也可以嵌套在接口中,处于与成员变量和方法平级的位置;
  2. 不论定义在接口,还是类中,嵌套接口默认强制是 static;
  3. 嵌套在类中的接口,可以被private,protected,default和public四种权限修饰;嵌套在接口中的接口,只能被public修饰;

  4. 在实现接口的过程中,我们不需要实现嵌套在其内部的任何接口。并且private接口是不能在定义它的类之外被实现。

  参考:Java编程思想

你可能感兴趣的:(java嵌套接口)