黑马程序员技术交流社区
标题:
线程既实现runnable,又继承thread
[打印本页]
作者:
张 涛
时间:
2012-9-15 12:26
标题:
线程既实现runnable,又继承thread
本帖最后由 张 涛 于 2012-9-20 19:46 编辑
一个线程既实现runnable,又继承thread,都实现了run方法,两个run方法到底实现哪个呢?
代码如下:
Thread th3 = new Thread(new Runnable(){
@Override
public void run() {
System.out.println("RUNNABLE");
}
}){
@Override
public void run() {
System.out.println("thread");
}
};
th3.start();
复制代码
结果是Thread,也就是运行的thread的run方法。
run方法的源码是:
public void run() {
if (target != null) {//target是runnable接口
target.run();
}
}
复制代码
那么,子类复写了run方法,复写了的子类中没有处理runnable实例target的代码,所以不会执行runnable的run方法,因为被复写后,target.run方法没了,是这样理解吗?
作者:
小黑马
时间:
2012-9-15 12:47
接口只是定义了一种规范,而且没有方法体,接口只是规范你必须这么做,具体怎么做并没有说,
API文档中查看thread类
类 Thread
java.lang.Object
java.lang.Thread
所有已实现的接口:
Runnable
他已经实现了Runnable 接口
作者:
张 涛
时间:
2012-9-18 14:55
这种情况是先继承父类,还是先实现接口?
作者:
明光照
时间:
2012-9-20 19:39
public class Test_2 {
static Thread th3 = new Thread(new Runnable() {
public void run() {
System.out.println("RUNNABLE");
}
}) {
public void run() {
System.out.println("thread");
}
};
public static void main(String args[]) {
th3.start();
}
}
从结果可以看出,是执行的Thread中run方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2