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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乖睡觉咯 中级黑马   /  2013-8-19 15:08  /  1664 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 乖睡觉咯 于 2013-8-19 15:12 编辑
  1. new Object(){
  2.     void method(){
  3.         System.out.println("method run");
  4.     }
  5. }.method();
复制代码
第一个和第二个 那个是正确的??为什么??

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

4 个回复

倒序浏览
第二个
Object obj = new Object(){
    void method(){
        System.out.println("method run");
    }
};
obj.method();
回复 使用道具 举报
gulup 来自手机 中级黑马 2013-8-19 15:23:19
藤椅
匿名,顾名思义,就是没有名字的,那么结果就不用我说了吧。
回复 使用道具 举报
第一个是对的,第二个是错的匿名内部类有点像子父类继承,定义内部类一般是重写外部类的方法,或者实现某个接口
你的第一个程序,定义了匿名内部类,相当于继承了Object内的所有方法,然后又增加了一个method的功能,
自己new了一个对象,然后使用了自己的功能,没有问题。
第二个程序,与子父类的多态原理类似,因为Object里面没有method的方法,所以不能用Object的对象引用去调用这个方法

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1 可以入学咯,继续保持努力

查看全部评分

回复 使用道具 举报
楼主,要是理解了,请把问题的"未解决"更改为"已解决"
谢谢合作!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马