class A 
{
  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();
  }
}(1)class里嵌套interface需要注意些什么?
(2)请问下面的a.getD()为什么错了?
    A a = new A();
    // Can't access A.D:
    //! A.D ad = a.getD();
(3)  private class DImp
     public class DImp2有什么不同的效果?

解决方案 »

  1.   

    (1)自己随便找本书看看。
    (2)你的interface   D是private属性,在类的外部当然不能被访问。
    (3)内部类加了private 和public的作用和类的成员加private,public的效果类似,Dimp只能在类A内部被访问,而DImp2可以在类的外部被访问。
      

  2.   

    1)能用private修饰interface?接口就是为了实现的啊
    2)想引用内部类的时候必须在构造函数里面传入一个内部类类型的参数吧?A a = new A( D d );接口可不可以没试过,还有不能在前面用private吧?
    3)用private声明之后,子类不能继承private所修饰的内容
      

  3.   

    先不管接口目的和使用习惯 起码这样可以运行通过 (2)没错
    class   A   

        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(); 
        } 
        public static void main(String[] args){
         A   a   =   new   A();       
            A.D   ad   =   a.getD(); 
        }