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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© blackstones1 中级黑马   /  2014-6-10 19:27  /  1266 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                new Object()
                {
                        public void show()
                        {
                                System.out.println("show run");
                        }
                }.show();

                Object obj = new Object()
                {
                        public void show()
                        {
                                System.out.println("show run");
                        }
                };
                obj.show();
这两个匿名内部类有区别吗 要是有的话具体在哪里 新手 求大婶详解

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

8 个回复

倒序浏览
第一个可以方法只能调用一次
第二个可以呀多次。
回复 使用道具 举报
第一个可以执行,
第二个编译不通过吧。
new Object()
                {
                        public void show()
                        {
                                System.out.println("show run");
                        }
                }.show();
创建一个Object子类对象,,调用子类的特有方法,

第2种方法也是创建一个Object的子类对象,但它向上转型了,它是父类引用指向了自己的子类对象。所以不能调用了子类的特有方法。所以会出错。
回复 使用道具 举报
楼上想说的正是在下想说的
回复 使用道具 举报
我个人觉得两种编译都能通过,因为符合Java对象多态的特点,不同的是,第一个是匿名内部类,第二个是内部类,但是运用了多态的特点,将父类的引用指向了子类,并覆盖了方法,但仅限于调用父类方法!!!
回复 使用道具 举报 1 1
匿名内部类   是简写格式。  如果一个类里面的方法你只调用一次 , 那你就用匿名内部类。
回复 使用道具 举报
格子、 发表于 2014-6-10 22:53
我个人觉得两种编译都能通过,因为符合Java对象多态的特点,不同的是,第一个是匿名内部类,第二个是内部类 ...

可是Object中没有show()这个方法.
回复 使用道具 举报
是的,都已经正解了
回复 使用道具 举报
原来是向上转型啊 把前面的视频看了下 搞懂了 谢谢 大家了 {:3_53:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马