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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邱石 中级黑马   /  2015-6-11 17:00  /  398 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一:匿名内部类(掌握)
                A:是局部内部类的简化形式
                B:前提
                        存在一个类或者接口(这里的类可以是具体类也可以是抽象类)
                C:格式:
                        new 类名或者接口名() {
                                重写方法;
                        };   //这里就相当于是一个重写了父类或者实现了接口的抽象方法的匿名对象。
                D:本质:
                        其实是继承该类或者实现接口的子类匿名对象
二:匿名内部类在开发中的使用
                我们在开发的时候,会看到抽象类,或者接口作为参数。
                而这个时候,我们知道实际需要的是一个子类对象。
                如果该方法仅仅调用一次,我们就可以使用匿名内部类的格式简化。
               
                interface Person {
                        public abstract void study();
                }
               
                class PersonDemo {
                        public void method(Person p) {
                                p.study();
                        }
                }
               
                class PersonTest {
                        public static void main(String[] args) {
                                PersonDemo pd = new PersonDemo();
                                pd.method(new Person() {
                                        public void study() {
                                                System.out.println("好好学习,天天向上");
                                        }
                                });//当调用匿名内部类次数比较少时,用这种方式,可以节省内存空间。
                        }
                }
               
三:匿名内部类的面试题(补齐代码)
                interface Inter {
                        void show();
                }
               
                class Outer {
                        //补齐代码
                        public static Inter method() {//返回值是接口的方法
                                return new Inter() {//匿名内部类
                                        public void show() {
                                                System.out.println("HelloWorld");
                                        }       
                                };
                        }
                }
               
                class OuterDemo {
                        public static void main(String[] args) {
                                Outer.method().show(); //链式编程
                        }
                }


3 个回复

正序浏览
付欢 发表于 2015-6-11 22:33
这个在监听器中还是用的很多的

嗯呢,是的。
回复 使用道具 举报
这个在监听器中还是用的很多的
回复 使用道具 举报
写的挺好,学到了不少东西
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马