今天看到一篇java面试宝典上的题目:
Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类?
提供的答案是:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
感觉很疑惑,我的印象中匿名内置类是可以继承其他类的
举个例子:
abstract class A
{
abstract public void fun();
}class outer
{
      public static void main(String [] args)
      {
               class Inner extends A
                  {
                         public void fun()
                         {
                                 System.out.println("implement for fun");
                         }
                   }
                new outer().callIner(new Inner());
      }
      public void callIner(A a)
       {
               a.fun();
        }
}
是我有错,还是他错,请高手指教

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【njnu_zhoubo】截止到2008-07-28 21:42:49的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:1                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:1                        结贴的总分数:0                        
    无满意结贴数:1                        无满意结贴分:30                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:---------------------
    无满意结贴率:100.00%               无满意结分率:---------------------
    敬礼!
      

  2.   

    这是我写的一个例子:public class Main { 
    public static void main(String[] args) { 
    InnerTest inner = new InnerTest(); 
    Test t = inner.get(3); 
    System.out.println(t.getI());
     } 

    class Test { //超类 
     private int i; 
    public Test(int i) { 
    this.i = i; 

    public int getI() { 
    return i; 


    class InnerTest { //用于内部类的测试 
     public Test get(int x) { 
    return new Test(x) { //创建匿名内部类,调用父类的构造方法 
     @Override public int getI() { 
    return super.getI() * 10;
     } 
    }; 

    } 这里的
    return new Test(x) { //创建匿名内部类,调用父类的构造方法 
     @Override public int getI() { 
    return super.getI() * 10;
     } 
    }; 
    这是个匿名内部类
      

  3.   

    格式乱了,改一下:
    public class Main {    public static void main(String[] args) {
            InnerTest inner = new InnerTest();
            Test t = inner.get(3);
            System.out.println(t.getI());
        }
    }class Test { //超类     private int i;    public Test(int i) {
            this.i = i;
        }    public int getI() {
            return i;
        }
    }class InnerTest { //用于内部类的测试     public Test get(int x) {
            return new Test(x) { //创建匿名内部类,调用父类的构造方法             @Override
                public int getI() {
                    return super.getI() * 10;
                }
            };
        }

      

  4.   

    虽然不能extends其他的类,这个匿名内部类实际是Test类的子类
      

  5.   

     class Inner extends A 
                      { 
                            public void fun() 
                            { 
                                    System.out.println("implement for fun"); 
                            } 
                      } 
    你这个是一个普通的内部类并非匿名内部类
      

  6.   

    这个方法不应该返回 一个test 类的对象么?