黑马程序员技术交流社区

标题: 内部类问题 [打印本页]

作者: 尹善波    时间: 2012-8-1 00:49
标题: 内部类问题

//多线程中的内部类
class ThreadTest
{
  public static void main(String[] args)
  {
    new Thread()//这里是把Thread默认为是这个内部类的父类吗,可不可以new另外的
{
  public void run()
   {
    for(int x=0; x<100; x++)
     {
   System.out.println(Thread.currentThread().getName()+"...1.."+x);
     }
   }
}.start();
  //Runnable r  = new Runnable()
   new Runnable()//接口不是也可以创建匿名内部类吗;为什么这么些会错
                  //而注释的却可以
  {
      public void run()
        {
             for(int x=0; x<100; x++)
                   {
        System.out.println(Thread.currentThread().getName()+"...3.."+x);
       }
   }
  }.start();
  //new Thread(r).start();
}
}
//如果匿名内部类中有静态方法,那么这些方法访问外部类会不会受局限

作者: 周坤    时间: 2012-8-1 01:13
class ThreadTest
{
   public static void main(String[] args)
  {
     new Thread()//这里是把Thread默认为是这个内部类的父类吗,可不可以new另外的? 这里是这个内部类的父类。匿名内部类,{ }中的就是要继承或者实现Thread().若是new其他的,就是匿名其他类了。
{
   public void run()
    {
     for(int x=0; x<100; x++)
      {
    System.out.println(Thread.currentThread().getName()+"...1.."+x);
      }
    }
}.start();
   //Runnable r  = new Runnable()
    new Runnable()//接口不是也可以创建匿名内部类吗;为什么这么些会错?出错是因为Runnable()不能调用.start()方法,new Thread(r).start();才是启动线程。如果把.start()去掉,就没有问题了。但由于匿名了,所以也无法达到启动线程的目的。
                   //而注释的却可以?注释了的也不能直接调用.start()方法,但可以通过new Thread(r).start();启动线程。
   {
       public void run()
         {
              for(int x=0; x<100; x++)
                    {
         System.out.println(Thread.currentThread().getName()+"...3.."+x);
        }
    }
   }.start();
  //new Thread(r).start();
}
}
//如果匿名内部类中有静态方法,那么这些方法访问外部类会不会受局限?静态方法只能访问静态
作者: 尹善波    时间: 2012-8-2 00:27
标题: RE: 内部类问题
以解决,,谢谢了




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