这个问题的确有点难,我的感觉是,从实践中学习,这些东东,我觉得并不常用呀,
常用的swing 中frame的inner class 也并不需要我门进行改动
老把精力放一个难于解决的问题,学习进度会很慢!

解决方案 »

  1.   

    静态成员类:
    class A{
         static class B{
                        }
            }
    这就是一个静态成员类,它的实例化可以用B b = A.B()
    至于用途用法,你可以看看effective java或者其他的书成员类:
    class A{
         class B{
                }
    }
    这就是成员类,它的实例化要先实例化A,在用A的实例加载class B,再实例化。局部类:
    在方法类定义的类:
    class A{
    void doSOMETHING(){
           class B{
                   }
    }
    只可以在方法里调用匿名类:
    class A{
    public A a;
    a.doSOMETHING(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.out.println("Exit when Closed event");
                    System.exit(0); //退出应用程序
                }
                public void windowActivated(WindowEvent e) {
                    setTitle("Test Frame " + counter++); // 改变窗口标题
                }
               }  );doSOMETHING(Object o){
    ·····}
    }
      

  2.   

    最后一个写错了:
    class A{
    public A a;
    public static void main(String [] args)
    {a.doSOMETHING(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.out.println("Exit when Closed event");
                    System.exit(0); //退出应用程序
                }
                public void windowActivated(WindowEvent e) {
                    setTitle("Test Frame " + counter++); // 改变窗口标题
                }
               }  );}doSOMETHING(Object o){
    ·····}
    }
      

  3.   

    看一下<<Thinking in java>>吧!
      

  4.   

    刚看了天极网的一些例子也不错http://www.yesky.com/20020326/1603561_4.shtml
      

  5.   

    我来贴一个匿名类的例子吧,之作抛砖引玉。public class Parcel6 {
      public Contents cont() {
        return new Contents() {//*****************
          private int i = 11;
          public int value() { return i; }
        }; // *********************
      }
      public static void main(String[] args) {
        Parcel6 p = new Parcel6();
        Contents c = p.cont();
      }
    } ///:)注意:“//****”之间的部分实际上就是个匿名类,实际生成一个这样的类
    class MyContents implements Contents {
      private int i = 11;
      public int value() { return i; }
    }
    return new MyContents();
      

  6.   

    匿名类
    有时用户仅仅为了在程序中定义一个对象而定义类,而且这个对象仅有的用途是将它作为参数直接传递给方法。在这种情况下,只要自己的类扩展现有类或实现接口,就可以选择将其定义为匿名类。这种匿名类的定义出现在语句的新表达式中,用户在其中创建和使用类的对象,所得不必提供类名。
    例如:假定要定义一个类对象,它实现一次使用的ActionListener接口
    pickButton.addActionListener(new ActionListener()
      {
        ……
       }
    类的定义出现在为addActionListener()方法创建参数的新表达式中。这种方法要求一个ActionListener类型的引用,换句话说就是要求一个对于实现ActionListener接口的类的引用。
      

  7.   

    匿名类是没有名字的,它一般是继承或者实现了一个父类或者一个接口,它的定义方式总是:
    new 父类或接口名 {   //类的定义
                      方法(){
                           }
                      }
    就是说,它继承父类的其他方法,只重写其中某个方法。