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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁志斌 中级黑马   /  2016-1-26 23:44  /  1141 人查看  /  7 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

原理可能简单,但是也可能会有粗心的小伙伴
                //1
                new Object(){
                        void show(){
                                System.out.println("show run");                               
                        }
                }.show();
                //2
                Object obj = new Object(){
                        void show(){
                                System.out.println("show run");
                        }
                };
                obj.show();
               
                1和2的写法正确吗?有区别吗?说出原因。
                写法是正确,1和2都是在通过匿名内部类建立一个Object类的子类对象。
                区别:
                第一个可是编译通过,并运行。
                第二个编译失败,因为匿名内部类是一个子类对象,当用Object的obj引用指向时,就被提升为了
                Object类型,而编译时检查Object类中是否有show方法,所以编译失败。

7 个回复

倒序浏览
吆西~~~~~~~~~~
回复 使用道具 举报
学习了
回复 使用道具 举报
不错学习了
回复 使用道具 举报
学习了
回复 使用道具 举报
学习了。。
回复 使用道具 举报
学习了...
回复 使用道具 举报
嗯 收藏一下啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马