A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 weimoliang 于 2014-5-22 17:10 编辑

当一个类为抽象类或者是接口的话,他们的子类必须覆写或者实现父类中的抽象方法,但是Thread类不是抽象类型的。

  public class Thread extends Object implements Runnable

run()方法也不抽象类型的,它是是实现了Runnable的run()方法。


问:那么,为什么要覆写run()方法呢?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 赞一个!

查看全部评分

15 个回复

倒序浏览
虽然不是抽象的 但是Thread实现了Runnable,就得实现Runnable的抽象方法,否则该子类还是接口,不是实现类

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 赞一个!~~

查看全部评分

回复 使用道具 举报
Thread 实现了Runable 接口 而run方法是Runnable的方法  是线程要运行的代码存放区
回复 使用道具 举报
Runnable是接口 接口中的方法默认抽象 实现接口要重写所有方法
所以必须重写 run方法
如果是继承Thread的话 你也可以不重写run方法 不会报错  但是你要指定线程运行的代码不是?
所以还得重写run方法

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 赞一个!

查看全部评分

回复 使用道具 举报
我找到楼主的重点了"run()方法也不抽象类型的"   接口中的方法是默认 public abstract
回复 使用道具 举报
黄晓鑫 发表于 2014-5-20 23:49
虽然不是抽象的 但是Thread实现了Runnable,就得实现Runnable的抽象方法,否则该子类还是接口,不是实现类 ...

Thread已经实现了run()方法。
回复 使用道具 举报
曲佳奇 发表于 2014-5-21 10:19
Runnable是接口 接口中的方法默认抽象 实现接口要重写所有方法
所以必须重写 run方法
如果是继承Thread的话 ...

这个解释靠谱!
回复 使用道具 举报
为什么要继承Thread类
回复 使用道具 举报
  1. public interface Runnable {
  2.      public abstract void run();
  3. }
复制代码

  1. public class Thread implements Runnable{

  2. }
复制代码

就因为此才要重写run()方法
回复 使用道具 举报
我来汇总下:Thread 实现了Runnable 接口,而run方法是Runnable的方法, 接口中的方法默认 public abstract。如果继承Thread类,不重写run方法 ,不会报错  ,但是无法指定线程运行的代码。
回复 使用道具 举报
MeloX 中级黑马 2014-7-21 21:26:33
11#
普通类实现接口是需要重写接口定义的抽象方法的,抽象类可以选择性override,不过暂时没有发现这么写的好处
回复 使用道具 举报
学习了!
回复 使用道具 举报
MeloX 中级黑马 2014-7-21 22:01:31
13#
Thread的run方法的实现源代码

  1. public void run() {
  2.      if (target != null) {
  3.         target.run();
  4.     }
  5. }
复制代码

所以使用继承Thread创建线程类时,需要重写run方法,因为默认的run方法什么也不干。


回复 使用道具 举报
MeloX 中级黑马 2014-7-21 22:03:05
14#
黄晓鑫 发表于 2014-5-20 23:49
虽然不是抽象的 但是Thread实现了Runnable,就得实现Runnable的抽象方法,否则该子类还是接口,不是实现类 ...

解释不完整。。
回复 使用道具 举报
看了看   很有水平
回复 使用道具 举报
Runnable是接口 接口中的方法默认抽象 实现接口要重写所有方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马