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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 追逐 高级黑马   /  2014-3-16 01:18  /  702 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
匿名内部类:
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();
               
        }
}

2 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
呵呵。共同学习。共同进步
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马