请教:在Java中使用多线程既继承Thread又实现Runnable会出错吗?

libitum_1 2010-08-03 03:23:09

根据下面的代码,选择可能的结果:
(1)class Demo extends Thread implements Runnable{
(2) public void run(){
System.out.println("k");
}
public static void main(String []args) {
Thread t=new Thread(new Demo());
(3) t.start();
}
}
a.代码(1)出错.
b. 代码(2)出错
c. 代码(3)出错
d.正常输出”k”

是选a了还是选b了??迷糊了。
...全文
204 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
anluyel 2010-08-03
  • 打赏
  • 举报
回复
答案显然是k了 重写了Thread中的run方法 运行当然是k了
如果不写这个run方法也是不会错的,因为子类已经隐式的有了run方法,相当于对实现了Runnable的方法,而且其实接口和父类之间是否有关系都是无关紧要的。
给个例子,三个类如下:
public class Child extends Father implements InterFace {
// public void run(){
// System.out.println("this is child");
// }
public static void main(String[] args) {
new Child().run();
}
}

public class Father implements InterFace {
public void run() {
System.out.println("this is father");
}
}
public interface InterFace {
public abstract void run();
}

如果注释掉子类的方法,则不会报错,运行父类的方法
如果不注释掉,则运行子类的方法

如果父类和接口之间没有关系,运行过程一样,同样不报错
loveofmylife 2010-08-03
  • 打赏
  • 举报
回复
没什么,jdk中很多类都是这样
比如ArrayList extends AbstractList implements List
而 AbstractList implements List
yexiongMYBH 2010-08-03
  • 打赏
  • 举报
回复
继承Thread和接口runnable,重写和实现了run()方法,结果是:正常输出k
wangzi1988 2010-08-03
  • 打赏
  • 举报
回复
经过实验,正常输出“k”。

public void run() {
System.out.println("k");
}

正好是对Thread类中的run()方法的重写,同时又实现了Runnable接口中的run()方法。
所以在线程开启后会调用该run()方法,打印输出“k”。

healer_kx 2010-08-03
  • 打赏
  • 举报
回复
Thread和Runnable是面向对象项目的关系,
其中Thread和线程仅仅相关,Runnable和线程其实毫无关系。

估计选d

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧