刚刚看了一篇关于内部类的文章,见到内部类的使用,产生了很多的问题,当然解决这些问题是有助于提高水平,但我两年前看书的时候,就不明白为什么要用内部类,直到现在用JAVA搞了几个项目,还是不明白有什么实际用途,哪位高手能给个例子出来说明它的实际意义?谢谢。

解决方案 »

  1.   

    public class A extends Y{
     private static class AA extends X{
     }
    }
      

  2.   

    两个基本目的,一个是安全地访问内部数据,一个是隐藏实现。
    举个例子,比如Iterator的实现。Iterator是个接口,不同的集合对此有不同的实现,而实现这个接口往往要访问对象数据的内部成员。如果不实现为内部类,很难同时保证可访问性与安全性。同时因为这个类是内部定义的,定义对外部是不可见的,所以iterator方法返回的时候只能返回Iterator类型,能够确保不泄漏内部实现,这是一种很好的编程风格。
      

  3.   

    内部类的多重继承可以举个例子来说,假设class A{
    void a(){}
    }interface I{void  a()}
      
    class B extends A{}此时想在B中实现接口I,但是又不想覆盖方法a()
    可以使用内部类实现接口I
    class B extends A{
    void b(){}
    private class Inner implements I{
    void a(){b();}
    }
    public I getI(){return new Inner();}
    }
    可以这样调用
    public class C{
      void cc(I i){}
      public static void main(String[] args){
        B b = new B();
        C c = new C();
        c.cc(b.getI());
    }
    }
      

  4.   

    TO lgh2008(ar_guang)大侠,其实我不是不会内部类,我两年前就知道了,只不过不知道在实践开发当中有什么应用,又或者说以我暂时的项目经验没发现在什么地方用了会带来好处,所以才开贴子问。 如果说应聘的技巧,我就班门弄斧,在这里就介绍一下我所见到的一些问题:现在有部分刚入行的人,JAVA书看了几本,各种概念倒背如流,考了几个认证,但是IDE,CVS,Ant,Jnit等基础工具全部没用过,写程序冗长拖挞,算法效率低,没考虑优雅性或可扩展性,项目中出现技术问题不会自己想办法解决,不会团体合作,还有眼界不宽,只知道Plain Java的那小部分的知识,不知道有Spring、Webwork、JSF、RMI,Oscahe,UML等流行的技术,不会用常用的操作系统或数据库,例如Linux,Oracle等等,所以才导致找工作中的种种不顺利,以上就是的就是我可以共享的体会,没有踩低别的人意思,只是做做思想上的debug,让有这些问题的人可以找出自己的缺点,改进一下。不过,我也承认,我的Java基础不是很扎实,因为我以前是搞Delphi,ASP出身的,后来两年多以前转到JAVA后一直搞J2EE,而且工作很忙,也没时间像以前上学时那样完完整整地看一本几百页的基础书,常常是用到哪,就看哪章。所以我才每天都坚持上这个J2SE基础版,不耻下问,一点一滴地把自己遗漏的知识补过来。我们做技术,是脚踏实地的,是马是骡一溜出来就知道,没有一个人可以靠嘴上功夫可以混到一个好的环镜中去的。
      

  5.   

    TO ys_wangtao(信心):
    我照你的方式做,可是報錯如下:
    Error(15,10): method a() in class testtmp.B.Inner cannot implement method a() in interface testtmp.I with weaker access privileges, was public
      

  6.   

    class B extends A{
    void b(){}
    private class Inner implements I{
    public void a(){b();}  //===========> 这个方法缺少一个public关键字,因为所有接口的方法都是public的,不能缩小其作用范围
    }
    public I getI(){return new Inner();}
    }
      

  7.   

    谢谢 ys_wangtao(信心)的例子,体现了出内部类的隐藏实现作用,但是我好像没看出来是多重继承的。
      

  8.   

    外部类和内部类之间的域和方法是可以随意访问的(static的除外),这带来了很多实现上的便利