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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 白月留梦 中级黑马   /  2015-6-29 00:10  /  358 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[code]//匿名内部类
//匿名内部类
interface Inter
{
        void show();
}
class Outer
{
        //补齐代码;通过匿名内部类
        public static Inter method(){
                return new Inter(){
                        //因为接口中方法的默认类型时public abstract void show();
                        //所以这里必须用public 进行修饰复写
                        public void show(){
                                System.out.println("匿名内部类");
                        }
                };
        }       
}

class InnerDemo
{
        public static void main(String[] args)
        {   //分析因为Outer可以直接调用method()方法说明method()方法是静态的
                //因为Otuter.method()可以调用show()方法;说明method()方法返回的是一个对象
                //因为返回的对象调用的show()方法定义在Inter接口中,说明返回的对象继承了Inner接口
                //因为要使用匿名内部类,只能用多态,父类引用指向之类对象,所以method()方法的返回值是Inner
                Outer.method().show();
               
                //创建一个方法function(),不能创建对象,使用该方法
                        new Object(){
                                public void function(){
                                        System.out.println("多态:父类引用指向子类对象。"+
                                                "而所有的类都是来自一个超类:Object类,"+
                                        "所以所有的实例对象都可以用Object引用来指向");
                                }
                }.function();


                //调用run方法,使用匿名内部类
                //因为main方法是静态的所以run方法也必须是静态的
                run(new Inter(){
                        public void show(){
                                System.out.println("这一切都是你自己的选择!");
                        }
                });               
        }

        public static void run(Inter in){
                in.show();
        }
}

1 个回复

倒序浏览
注释、代码都写的挺好,赞。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马