黑马程序员技术交流社区

标题: 匿名内部类 [打印本页]

作者: 追逐    时间: 2014-3-16 01:18
标题: 匿名内部类
/*
匿名内部类:
1,匿名内部类其实就是内部类的简写格式
2,定义匿名内部类的前提:
        内部类必须是继承一个类或者实现接口。
3,匿名内部类的格式: new父类或者接口的(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖,可以理解

为带内容的对象。
5,匿名内部类中定义的方法最好不要超过三个。
*/

//定义一个接口
interface Inner_1 {
        abstract void show();
}

class Outer_1 {
       
        //定义一个函数。匿名内部类在里面实现
        public void show() {
                new Inner_1() {
                        public void show() {
                                System.out.println("Inner_1 show");
                        }
                }.show();
        }
       
        /*
        根据提示填写内容
        根据提示我们可以想到Outer_1类中肯定有一个静态的shouRun()方法
        而且在Outer_1调用showRun()方法后运算的结果为一个对象
        而因为只有Inner_1类型的对象才可调用show()方法。
        所以返回值类型为Inner_1
        */
        public static Inner_1 showRun() {
                return new Inner_1() {
                        public void show() {
                                System.out.println("匿名类.run");
                        }
                };
        }
       
}

class OuterTest {
        public static void main(String[] args) {
                new Outer_1().show();
               
                //根据提示填写内容
                Outer_1.showRun().show();
               
                //问,不继承类也不实现类是否可以写内部类?
                //答:可以。可以通过Object类型的对象来实现
                new Object() {
                        public void show() {
                                System.out.println("Object::::::run");
                        }
                }.show();
               
        }
}
作者: 许庭洲    时间: 2014-3-16 06:17
值得学习ing!
作者: 追逐    时间: 2014-3-16 10:29
呵呵。共同学习。共同进步




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