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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林康春 黑马帝   /  2012-7-9 23:56  /  1482 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo8
{
        public static void main(String[] args)
        {
                new Thread( new Runnable(){
                  public void run(){
                    System.out.println("Runable run()");
                  }
               
                } ){
                  public void run(){
                    System.out.println("Thread run()");
                  }
               
                }.start();
                System.out.println("Hello World!");
        }
}
看得有点迷惑 怎么能快速的读明白呢?

4 个回复

倒序浏览
class Demo8
{
        public static void main(String[] args)
        {
                new Thread( new Runnable(){
                  public void run(){
                    System.out.println("Runable run()");
                  }
               
                } ){
                  public void run(){
                    System.out.println("Thread run()");
                  }
               
                }.start();
                System.out.println("Hello World!");
        }
}

===============================
这代码编排格式不好,所以Lz不能一眼看明白,其实只要按部就班的去根据内部类和Runnable接口的定义来分析就能明白了。
我把代码重新编排了一下,估计你就看懂了。

class Demo8
{
        public static void main(String[] args)
        {
                new Thread(new Runnable()         //下面是Runnable接口子类的具体实现。
                                {
                                        public void run()
                                        {
                                                System.out.println("Runable run()");
                                        }
                                })   //到这里,内部类Runnable子类定义结束
                                                        {   //这里开始匿名内部类的定义,只有一个方法run()
                                                                public void run()
                                                                {
                                                                        System.out.println("Thread run()");
                                                                }
                                                        }.start();   

                System.out.println("Hello World!");
        }
}

关于复杂部分还有更简化的版本,如下。

class Demo8
{
        public static void main(String[] args)
        {
                new Thread( new Runnable(){})
                                        {
                                                public void run()
                                                {}
                                        }.start();

                System.out.println("Hello World!");
        }
}


评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
class Demo8
{
        public static void main(String[] args)
        {
                new Thread( new Runnable()//实现Runnable()的匿名内部类的对象
                                 {
                                        public void run()
                                       {
                                              System.out.println("Runable run()");
                                       }
                                }
)
               {
                          public void run()
                         {
                                      System.out.println("Thread run()");
                         }
               
              }.start();
//整体是继承Thread的匿名内部类对象调用start方法                 
               System.out.println("Hello World!");
        }
}
回复 使用道具 举报
匿名内部类:
1.匿名内部类其实就是内部类的简写格式。
2.定义匿名内部类的前提:内部类必须是继承一个类或者实现接口。
3.匿名内部类的格式:new 父类或者接口(){定义子类的内容}
4.其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖,可以理解为带内容的对象。
5.匿名内部类中定义的方法最好不要超过3个。
回复 使用道具 举报
谢谢各位  懂了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马