黑马程序员技术交流社区
标题: 线程RUN方法的问题,结果不理解 [打印本页]
作者: 一诺千金 时间: 2014-3-29 17:00
标题: 线程RUN方法的问题,结果不理解
new Thread(new Runnable(){ //匿名
public voidrun(){
System.out.println("runnablerun");
}
})
{
public voidrun(){
System.out.println("subthreadrun");
}
}.start();
//结果:subthreadrun
作者: 海世山盟 时间: 2014-3-29 19:11
其实Thread类继承了Object类 实现了Runnable接口。所以在Thread李的方法覆盖了Runnable的方法。因此打印结果就是这样的了。。
作者: caijunsong 时间: 2014-3-29 19:36
你的代码怎么写的乱起八糟的 你把你的整个代码都粘上去,版主你怎么给分了!!!
作者: 海世山盟 时间: 2014-3-29 19:57
人家用的是匿名形式写的。
作者: caijunsong 时间: 2014-3-29 21:47
你好 我还真的看不懂 麻烦朋友 把它完整的还原一遍下
作者: Softlmis 时间: 2014-3-29 21:59
本帖最后由 Softlmis 于 2014-3-29 22:11 编辑
- <p>new Thread(new Runnable(){ //匿名
- public voidrun(){
- System.out.println("runnablerun");
- }
- }); //少了一个分号
- {
- public voidrun(){
- System.out.println"subthreadrun");
- }
- }.start(); </p>
复制代码
总算是看明白了:是不是有个实例代码块?
但是你上面少了个分号吧?应该是这样的:
但是写法还是有问题啊。编译不过去的。实例代码块中不能有方法
作者: ╰つ 时间: 2014-3-29 22:30
这个就是多态的问题,让我们一起来看一下把,Thread里面有个run方法,然后实现接口,就覆盖了run方法,好重点来了,你看最下面的子类又覆盖了run方法,所以打印的就是这个子类里面的内容:subthreadrun
作者: ╰青青子佩ˊゝ 时间: 2014-3-29 22:57
代码没有错的。
- //Tread类本身就实现了Runnable接口。如下代码:
- new Thread(){
- public void run(){
- System.out.println("lala");
- }
- }.start();
- //new Thread()中传入一个实现了Runnable接口的类(new Runnable(){public void run(){}})的话,那么执行这其中的run中代码。 、、
- //像这段代码,先向Thread对象中传入实现了Runnable接口的类的对象,再将Thread对象中的run方法复写,那么只会执行后面那个run方法中代码.
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |