黑马程序员技术交流社区

标题: 分享一道面试题 [打印本页]

作者: 梁志斌    时间: 2016-1-26 23:44
标题: 分享一道面试题
原理可能简单,但是也可能会有粗心的小伙伴
                //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方法,所以编译失败。

作者: fury1994    时间: 2016-1-27 10:00
吆西~~~~~~~~~~
作者: qt520    时间: 2016-1-27 11:45
学习了
作者: jacky左    时间: 2016-1-27 12:26
不错学习了
作者: z4951061    时间: 2016-1-27 12:37
学习了
作者: 15856681986    时间: 2016-1-27 21:18
学习了。。
作者: huijiadanipp    时间: 2016-1-27 21:26
学习了...
作者: the_way    时间: 2016-1-27 22:29
嗯 收藏一下啦




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