普通内部类:定义复杂数据类型,但是可以控制外部不能访问。保持类的封装性
匿名内部类:使用比较简单,无须显式地定义类对象和extends语句。呵呵,我就知道这个

解决方案 »

  1.   

    内部类的第一个好处:隐藏你不想让别人知道的操作,也即封装性。 
    内部类的第二个好处:内部类对象可以访问创建它的外部类对象的内容,甚至包括私有变量!java内部类有什么好处?为什么需要内部类?  首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时候,你可以建一个内部类实现这个接口。由于内部类对外部类的所有内容都是可访问的,所以这样做可以完成所有你直接实现这个接口的功能。  不过你可能要质疑,更改一下方法的不就行了吗?  的确,以此作为设计内部类的理由,实在没有说服力。  真正的原因是这样的,java中的内部类和接口加在一起,可以的解决常被C++程序员抱怨java中存在的一个问题——没有多继承。实际上,C++的多继承设计起来很复杂,而java通过内部类加上接口,可以很好的实现多继承的效果。详细请看:http://www.yesky.com/SoftChannel/72342371961929728/20040906/1850659.shtml
      

  2.   

    《java编程思想》中以这样一句经典的话描述了innerclass:
    java中没有多重继承,但是innerclass是对实现多重继承的完美解答
      

  3.   

    写Gui界面http://community.csdn.net/Expert/topic/3881/3881726.xml?temp=.9459803
    兄弟有空来这里看看
    您的问题会得到很不错的解决
      

  4.   

    主要作用,一封装
    二用是重用性比较小的类中,比如事件listener还有就是要来完成特定需要实现在的接口......
      

  5.   

    Core Java中写的:
    .一个内部类的对象能够访问创建他的对象的实现--包括私有字段
    .对于同一个包中的其它类来说,内部类能够隐藏起来
    .匿名内部类可以很方便地定义回调
    .使用内部类可以非常方便地编写事件驱动的程序
      

  6.   

    是呀,经常在编写事件驱动的程序中用到。
    Public class OuterClass extends JFrame{
    .......
    rivate class NewAction extends AbstractAction {
    public NewAction(){
          {
             putValue( NAME, "New" );
             putValue( SMALL_ICON, new ImageIcon(
                getClass().getResource( "images/New24.png" ) ) );
             putValue( SHORT_DESCRIPTION, "New" );
             putValue( LONG_DESCRIPTION,
                "Your new action" );
             putValue( MNEMONIC_KEY, new Integer( 'N' ) );
          }//end of NewAction constructor public void actionPerformed( ActionEvent e )
          {
        // 事件处理     
          }
       }
    }
    以上就是在一个OuterClass定义的内部类NewAction(),这样就可以很容易地在OuterClass内部实现相应的事件模型,比如这个NewAction()可以作为一个工具兰的按扭处理加进OuterClass。