美文网首页
【Java面试题】13 Anonymous Inner Clas

【Java面试题】13 Anonymous Inner Clas

作者: 暖熊熊 | 来源:发表于2017-10-16 12:56 被阅读0次

    1. 什么是匿名内部类?

    内部类,存在于另一个类内部的类,而匿名内部类,顾名思义,就是没有名字的内部类。

    2. 为什么需要匿名内部类?

    每个内部类都能够各自继承某一实现类。因此,内部类不受限于外部类是否已继承某一实现类。
    如果少了inner class所提供的“继承自多个具体(concrete)或抽象(abstract)类”的能力,设计上和编程上的某些问题会变得十分棘手。

    所以,从某个角度来看inner class,你可以说它是多重继承问题的完整解决方案。interface能够解决其中一部分问题,但inner classes才能有效而实际地允许“多重实现继承(multiple implementation)”。也就是说,inner classes实际上允许你继承多个non-interface。
    从这个层面上使用内部类时一般都是通过其父类或继承的接口来进行实例化和初始化的,如3中所示,这时内部类的名字是多余的,所以
    就使用了匿名内部类。

    3. 怎么实现匿名内部类?

    匿名内部类的实现非常简单,如有一接口

    Interface A{
        public void method();
    }
    

    这时你可以写一个如下的语句得到接口A的实现类的对象

    A a = new A() {
        public void method() {
            System.out.println("hehe");
        }
    };
    

    而其中的

    { 
        public void method(){
            System.out.println("hehe");
    } 
    };
    

    就是定义了一个匿名内部类

    4. 问题答案

    以上可看出匿名内部类在实现时须借助一个类或接口,从这个层次上讲它是可以继承其他类也可以实现接口的,
    但通过extendsimplements关键字那是不可能的.

    相关文章

      网友评论

          本文标题:【Java面试题】13 Anonymous Inner Clas

          本文链接:https://www.haomeiwen.com/subject/stykuxtx.html