A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔司龙 中级黑马   /  2015-6-30 22:31  /  182 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

定义:没有名字的局部内部类。
        格式:
                new 接口名或者抽象类名 () {
                        // 实现接口或抽象类的方法
                        // 可以有自己的方法(但是我们一般不这么用)
                };
               
        理解:匿名内部类实际上实现了接口(或者继承了抽象类)的子类匿名对象。、
       
        举例:
                interface Animal {
                        // 抽象方法
                }

                class Cat implements Animal {
                        // 实现方法
                }
               
                //new B();
               
                //new A () {
                        //实现接口A的方法
                //};
               
                Cat c = new Cat();
               
                Test t = new Test();
                //t.show(c);
               
                t.show(new Animal() {
                        // 实现接口Animal的方法
                });
       
                是不是相当于把子类实现和创建子类对象放到一个步骤完成了。

        使用:一般在参数列表里面,如果参数是接口(抽象类),就可以使用匿名内部类替代接口(抽象类)。
       
        class Test {
                public void show (Animal a) {
                        // 这个地方的接口就可以使用匿名内部类替代
                        a.show(); // 这个show方法一定是实现类的
                }
        }
               
               
       
       
                        举例:
                        接口
                        interface Inter {
                                // 抽象方法
                        }
                       
                        class ImplTest implements Inter {
                                // 实现接口的抽象方法
                        }
                       
                        // 创建具体的实现对象
                        ImplTest it = new ImplTest();
                        // 向上转型 多态
                        Inter ii = it;
                       
                        Inter ii = new ImplTest();

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马