我在看Java面试题时,有一道问题很是不解。
问题:
Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)
给出的标准答案是:
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现我翻来覆去的读也没弄懂。
我的理解就是:匿名类部类是以new的形式实现父类或接口,它不存在类名。
如题所说的继承与实现,到底是何种书写规格,如果没有书写规格何来此问。我也看了Java编程思想上对内部类的介绍,没提到到匿名内部类有继承与实现这一说。
不知道我的提问大家是否能看懂,如果知道的请帮我解决下心中的困扰。

解决方案 »

  1.   

    Thread th = new Thread(){
      public void run(){  }
    }.start();是否算继承了Thread呢?
      

  2.   

    哈哈 我前几天也问过这个问题http://topic.csdn.net/u/20100719/13/2ba02bae-a29b-421a-8884-91ad88fd6a03.html?1234508618lz 是不是 把“内部类可以作为一个接口,由另一个内部类实现” 这句话中的 内部类想象成 “匿名内部类”了? 嘿嘿 俺当初就是这么想的
      

  3.   


    public class TestInnerClass {
        public interface T1 {
            void Test();
        }    public static interface T2 {
            void Test2();
        }     class IImpl implements TestInnerClass.T1 {        @Override
            public void Test() {
                System.out.println("IImpl Test");
            }
        }     class IImpl2 implements TestInnerClass.T2 {        @Override
            public void Test2() {
                System.out.println("IImp2 Test");
            }
        }    public static void main(String[] args) {
            TestInnerClass t = new TestInnerClass();
            TestInnerClass.T1 i = t.new IImpl();
            i.Test();
            TestInnerClass.T2 i2 = t.new IImpl2();
            i2.Test2();
        }
    };引用一下, 一个哥们解决了我的困惑
      

  4.   

    那你的理解是不是:匿名内部类可以implements(实现)interface(接口)
    如果是的话,我尝试了下:一个内部类可以作为一个抽象类,由另一个内部类继承。
    那标准的不能继承其它类又如何理解?
      

  5.   


    TestInnerClass.T1 i = t.new IImpl();
    i.Test();
    TestInnerClass.T2 i2 = t.new IImpl2();
    i2.Test2();这种new法倒是很少见
      

  6.   


    public abstract class Ellipse2D extends RectangularShape {
    public static class Float extends Ellipse2D implements Serializable {
    public Float() {
    }
    public Float(float x, float y, float w, float h) {
    setFrame(x, y, w, h);
    }
    }
    }