黑马程序员技术交流社区

标题: 一个匿名内部类的问题 [打印本页]

作者: Sevenette    时间: 2014-5-22 22:24
标题: 一个匿名内部类的问题

  1. class ThreadTest
  2. {
  3.         public static void main(String[] args)
  4.         {

  5.                 new Thread(new Runnable()
  6.                 {
  7.                         public void run()
  8.                         {
  9.                                 System.out.println("runnable run");
  10.                         }
  11.                 })
  12.                 {
  13.                         public void run()
  14.                         {
  15.                                 System.out.println("subThread run");
  16.                         }
  17.                 }.start();

复制代码


看着略晕。。。
运行结果是subThread run
{:3_67:} 求大神讲解一下原因。。。
作者: java木    时间: 2014-5-22 22:29
没什么疑问啊,就应该是这个结果啊
作者: Sevenette    时间: 2014-5-22 22:38
java木 发表于 2014-5-22 22:29
没什么疑问啊,就应该是这个结果啊

结果能大概猜出来,但具体的过程不太明白
作者: wangleixhlm    时间: 2014-5-22 23:20
应该是这样吧
  1.     public static void main(String[] args)
  2.     {
  3.             new Thread(new Runnable()
  4.         {
  5.                             //Runnable对象的run()方法
  6.                 public void run()
  7.                 {
  8.                         System.out.println("runnable run");
  9.                 }
  10.         })
  11.         {
  12.                             //Thread的run()方法
  13.                 public void run()
  14.                 {
  15.                         System.out.println("subThread run");
  16.                 }
  17.         }.start();
复制代码

作者: 流沙    时间: 2014-5-23 09:48
new Thread(new Runnable(){})  这个是什么意思?
作者: 流沙    时间: 2014-5-23 10:33
我是菜鸟解释一下,望楼主能看明白,勿喷!!!
你new了一个Thread,往里传了一个匿名内部类对象,这个匿名内部类对象就是Runable类的子类,复写了run方法,这个时候你就new的是对象  .start();运行的就是runnable run了。  但是你后边又跟了一个{}就说明这还是一个匿名内部类。你又覆盖了一遍run 方法,所以最后运行的是subThread run;









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