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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一诺千金 中级黑马   /  2014-3-29 17:00  /  1283 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

new Thread(new Runnable(){ //匿名
            public voidrun(){
                System.out.println("runnablerun");
            }
        })
        {
            public voidrun(){
                System.out.println("subthreadrun");
            }
        }.start();  
//结果:subthreadrun

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

7 个回复

倒序浏览
其实Thread类继承了Object类 实现了Runnable接口。所以在Thread李的方法覆盖了Runnable的方法。因此打印结果就是这样的了。。
回复 使用道具 举报
你的代码怎么写的乱起八糟的   你把你的整个代码都粘上去,版主你怎么给分了!!!
回复 使用道具 举报
caijunsong 发表于 2014-3-29 19:36
你的代码怎么写的乱起八糟的   你把你的整个代码都粘上去,版主你怎么给分了!!! ...

人家用的是匿名形式写的。
回复 使用道具 举报
海世山盟 发表于 2014-3-29 19:57
人家用的是匿名形式写的。

你好 我还真的看不懂 麻烦朋友 把它完整的还原一遍下
回复 使用道具 举报
本帖最后由 Softlmis 于 2014-3-29 22:11 编辑
  1. <p>new Thread(new Runnable(){ //匿名

  2.             public voidrun(){

  3.                 System.out.println("runnablerun");

  4.             }

  5.         });         //少了一个分号

  6. {
  7.      public voidrun(){
  8.         System.out.println"subthreadrun");
  9.      }
  10. }.start(); </p>
复制代码

总算是看明白了:是不是有个实例代码块?

但是你上面少了个分号吧?应该是这样的:


但是写法还是有问题啊。编译不过去的。实例代码块中不能有方法

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
╰つ 中级黑马 2014-3-29 22:30:35
7#
这个就是多态的问题,让我们一起来看一下把,Thread里面有个run方法,然后实现接口,就覆盖了run方法,好重点来了,你看最下面的子类又覆盖了run方法,所以打印的就是这个子类里面的内容:subthreadrun
回复 使用道具 举报
代码没有错的。
  1. //Tread类本身就实现了Runnable接口。如下代码:
  2.                 new Thread(){
  3.                         public void run(){
  4.                                 System.out.println("lala");
  5.                         }
  6.                 }.start();
  7.                 //new Thread()中传入一个实现了Runnable接口的类(new Runnable(){public void run(){}})的话,那么执行这其中的run中代码。                、、
  8.                 //像这段代码,先向Thread对象中传入实现了Runnable接口的类的对象,再将Thread对象中的run方法复写,那么只会执行后面那个run方法中代码.
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马