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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

匿名内部类(掌握)
                A:是局部内部类的简化形式
                B:前提
                        存在一个类或者接口(这里的类可以是具体类也可以是抽象类)
                C:格式:
                        new 类名或者接口名() {
                                重写方法;
                        };   //这里就相当于是一个重写了父类或者实现了接口的抽象方法的匿名对象。
                D:本质:
                        其实是继承该类或者实现接口的子类匿名对象
        (8)匿名内部类在开发中的使用
                我们在开发的时候,会看到抽象类,或者接口作为参数。
                而这个时候,我们知道实际需要的是一个子类对象。
                如果该方法仅仅调用一次,我们就可以使用匿名内部类的格式简化。
               
                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("好好学习,天天向上");
                                        }
                                });//当调用匿名内部类次数比较少时,用这种方式,可以节省内存空间。
                        }
                }
               
        (9)匿名内部类的面试题(补齐代码)
                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(); //链式编程
                        }
                }

12 个回复

正序浏览
总结的不错,学习学习
回复 使用道具 举报
总结的不错
回复 使用道具 举报
不错,学习了
回复 使用道具 举报
很需要,谢谢
回复 使用道具 举报

共同进步,共同努力
回复 使用道具 举报
不错,不错!!
回复 使用道具 举报
我自今都纠缠在匿名内部类的写法上无法自拔……每次使用的时候都要去翻书套格式……完全没理解匿名写法的规则含义……
回复 使用道具 举报
之前看匿名内部类纠结好久,这一块要是通了,感觉会有一个反刍的作用,感谢分享。
回复 使用道具 举报
感谢分享,学习了
回复 使用道具 举报
一起学习
回复 使用道具 举报
不错  复习了
回复 使用道具 举报
挺好,学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马