Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口):
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
这里是这么说的,下面有一段代码是我验证用的:这是一个RunnableTest类 MyThread1,   MyThread2, MyThread3  这里有3个内部类 
public   class   RunnableTest{   

  public   static   void   main(String[]   args){   
  MyThread1   mt1   =   new   MyThread1();   
  MyThread2   mt2   =   new   MyThread2();   
  MyThread3   mt3   =   new   MyThread3();   
  mt2.th.start();   
  mt1.th.start();   
  mt3.th.start();   
  }   
  }   
  class   MyThread1   implements   Runnable{   
  public MyThread1() {
System.out.println("this is MyThread1 class");
}
Thread   th   =   new   Thread(this);   
  public   void   run(){   
  for   (int   i   =   0;   i   <   10;   i++){   
  System.out.println("BMW"   +   i);   
  }   
  }   
  }   
    
  class   MyThread2 extends Test{   
  public MyThread2() {
System.out.println("this is MyThread2 class");
}
  Thread   th   =   new   Thread(){   
  public   void   run(){   
  for   (int   i   =   0;   i   <   10;   i++){   
  System.out.println(i);   
  }   
  }   
  };   
  }   
  class   MyThread3  {   
  Runnable   ra   =   new   Runnable(){   
  public   void   run(){   
  for   (char   ch   =   65;   ch   <   70;   ch++){   
  System.out.println(ch);   
  }   
  }   
  };   
  Thread   th   =   new   Thread(ra);   
  }
这里是另外一个类Test  
public class Test extends MyThread1 {
public Test(){

System.out.println("this is  test");
}
public static void main(String[] args) {
Test test=new Test();

}
}
现在的问题就是来了&…… 别笑哦 我知道会有点白痴,但是我真的不明白
就是 
1,为什么叫匿名内部类 上面MyThread1,   MyThread2, MyThread3 这些内部类不是都有名字么,如果这个不算,那上面样的才算名字?
2,上面说不能extends(继承) 其它类,那为什么MyThread2可以继承Test类?
3,但一个内部类可以作为一个接口,由另一个内部类实现这又是上面意思,是  class   MyThread3  implements MyThread2{   这样?
请各位大侠提俺解惑…… 

解决方案 »

  1.   

    这个例子好像不是匿名内部类,匿名内部类是没有构造函数滴。。你这3个是红果果的内部类呀。。
    public class Goods3 {
         public Contents cont(){
              return new Contents(){《---这种才是
                   private int i = 11;
                   public int value() { 
                        return i; 
                   }
              };
         }
    } 这里方法cont()使用匿名内部类直接返回了一个实现了接口Contents的类的对象,看上去的确十分简洁。
      

  2.   


    那你这个怎么被另一个内部类实现 这又是什么意思,匿名的内部类就是new一个已有的类? 我现在越来越美概念了,麻烦说的仔细点 
      

  3.   

    被另一个内部类实现是指内部类,而不是匿名内部类实现匿名内部类的语法:
    [variable_type_superclass =]  new superclass_name()  {
        // properties and methods
    }[;] 
      

  4.   

    楼上说的对的吧
    public class Goods3 {
    public Contents cont(){
    return new Contents(){《---这个不是已有的类,是新建的你想用的类。。
    private int i = 11;
    public int value() { 
    return i; 
    }
    }……
      

  5.   

     Contents 那你这个是类名么? return new Contents()还回该类的一个实例?搞不懂 脑袋浆糊了2天后结贴 谢谢啊
      

  6.   

    Thread th = new Thread(){
      public void run(){  }
    };
      

  7.   

    public static void main(String[] sss) {
      
     new Thread(
      //这个就是匿名内部类
      new Runnable() {
       public void run() {
         
       }
      }
    ).start();
    }
      

  8.   

    Contents是所创建的匿名内部类的超类
    返回的就是该匿名内部类的实例
    还有哪里不清楚呢?