黑马程序员技术交流社区

标题: 匿名内部类详解含代码解析 [打印本页]

作者: 邱石    时间: 2015-6-11 17:00
标题: 匿名内部类详解含代码解析
一:匿名内部类(掌握)
                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(); //链式编程
                        }
                }



作者: GoldMan    时间: 2015-6-11 22:00
写的挺好,学到了不少东西
作者: 付欢    时间: 2015-6-11 22:33
这个在监听器中还是用的很多的
作者: 邱石    时间: 2015-6-11 22:44
付欢 发表于 2015-6-11 22:33
这个在监听器中还是用的很多的

嗯呢,是的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2