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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一叶障目 中级黑马   /  2014-11-5 22:48  /  1357 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class ThreadDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 new Thread(new Runnable(){
  6.                         public void run()
  7.                         {
  8.                                 System.out.println("runnable");

  9.                         }
  10.                 })
  11.                 {
  12.                         public void run()
  13.                         {
  14.                                 System.out.println("thread");
  15.                         }
  16.                 }.start();
  17.         }
  18. }
复制代码

为什么这段代码结果是thread而不是runnable?

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

9 个回复

倒序浏览
匿名内部类的问题,因为你Thread这个子类中有自己的run
方法会覆盖父类中 run(){r.run)这个方法,所以会执行子类Thread的run方法。也就是打印Thread.
匿名内部类的前提是继承一个父类或者实现了一个接口。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

回复 使用道具 举报
new Thread(new Runnable (){});返回是一个 Thread对象
new Thread(new Runnable (){}){};返回时一个Thread的子类对象
new Thread(new Runnable (){}){public void run(){}};这里的run()会覆盖new Runnable (){}里的run方法

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
dong53821713 发表于 2014-11-6 11:57
new Thread(new Runnable (){});返回是一个 Thread对象
new Thread(new Runnable (){}){};返回时一个Thread ...

谢谢,懂了:)
回复 使用道具 举报
wf111sxwf 发表于 2014-11-6 11:20
匿名内部类的问题,因为你Thread这个子类中有自己的run
方法会覆盖父类中 run(){r.run)这个方法,所以会 ...

谢谢,加油
回复 使用道具 举报
对啊,会覆盖父类的方法
回复 使用道具 举报
这是双重嵌套匿名内部类,不过不能确定是不是run方法覆盖啊?不太懂
回复 使用道具 举报
相当于在类体重覆盖了了run方法。
回复 使用道具 举报
匿名内部类的问题。子类的方法会覆盖父类的方法。多态和匿名内部类的相结合的问题
回复 使用道具 举报
好厉害啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马