黑马程序员技术交流社区
标题:
内部类问题
[打印本页]
作者:
尹善波
时间:
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