解决方案 »

  1.   

    给你个代码,应该能看懂吧interface MyInter{
    void testA();
    }
    class Outer{
    int x=1;

    void printOut(){
    /*
    //定义一个局部内部类,实现接口
    class Loacl implements MyInter{
    public void testA(){
    System.out.println("局部内部类实现了接口,重写了接口的方法");
    }
    }
    //创建一个局部内部类对象.并使用局部内部类的方法.
    new Loacl().testA();
    */
    /*
    下面使用匿名内部类简化书写... 注意,这不是new 接口, 而是创建了一个接口的实现类,不想给该实现类起名字...
    new 操作符会返回一个对象,这个对象其实是接口的实现类对象.,
    并直接用new 操作符返回的接口的实现类的对象的引用,调用了testA 方法.
    纯粹是为了简化书写而出现的.
    */
    new MyInter(){
    public void testA(){
    System.out.println("匿名内部类...");
    }
    }.testA();
    }
    }
      

  2.   

    恩,这个好理解,
            new MyInter(){
                public void testA(){
                    System.out.println("匿名内部类...");
                }
            }.testA();
    MyInter()是借口, 而{ }里面的内容是这个匿名类,并且这个匿名类里面实现了借口MyInter()的方法testA(),
    我感觉这才是实实在在的内部匿名类, 另外还有个问题就是,匿名内部类貌似只能在方法体力里面定义,是不是这样的?
      

  3.   

    方法体外也可以定义匿名类,定义到属性上即可。
    例如
    private MyInter myclass=new MyInter(){ ... };
      

  4.   

    return new A(){
         //....类体
    }
    表示有一个匿名内部类继承了类A。该匿名内部类是A的子类,A不是该匿名内部类的类名啊。