黑马程序员技术交流社区

标题: 继承Thread类,为什么必须要实现run()方法? [打印本页]

作者: weimoliang    时间: 2014-5-20 23:25
标题: 继承Thread类,为什么必须要实现run()方法?
本帖最后由 weimoliang 于 2014-5-22 17:10 编辑

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

  public class Thread extends Object implements Runnable

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


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

作者: 黄晓鑫    时间: 2014-5-20 23:49
虽然不是抽象的 但是Thread实现了Runnable,就得实现Runnable的抽象方法,否则该子类还是接口,不是实现类
作者: alax    时间: 2014-5-21 03:29
Thread 实现了Runable 接口 而run方法是Runnable的方法  是线程要运行的代码存放区
作者: 曲佳奇    时间: 2014-5-21 10:19
Runnable是接口 接口中的方法默认抽象 实现接口要重写所有方法
所以必须重写 run方法
如果是继承Thread的话 你也可以不重写run方法 不会报错  但是你要指定线程运行的代码不是?
所以还得重写run方法
作者: 曲佳奇    时间: 2014-5-21 10:22
我找到楼主的重点了"run()方法也不抽象类型的"   接口中的方法是默认 public abstract
作者: weimoliang    时间: 2014-5-21 13:43
黄晓鑫 发表于 2014-5-20 23:49
虽然不是抽象的 但是Thread实现了Runnable,就得实现Runnable的抽象方法,否则该子类还是接口,不是实现类 ...

Thread已经实现了run()方法。
作者: weimoliang    时间: 2014-5-21 13:45
曲佳奇 发表于 2014-5-21 10:19
Runnable是接口 接口中的方法默认抽象 实现接口要重写所有方法
所以必须重写 run方法
如果是继承Thread的话 ...

这个解释靠谱!
作者: 艮昕辶    时间: 2014-5-21 14:45
为什么要继承Thread类

作者: 江峰渔火    时间: 2014-6-13 20:13
  1. public interface Runnable {
  2.      public abstract void run();
  3. }
复制代码

  1. public class Thread implements Runnable{

  2. }
复制代码

就因为此才要重写run()方法
作者: 思维    时间: 2014-7-21 15:27
我来汇总下:Thread 实现了Runnable 接口,而run方法是Runnable的方法, 接口中的方法默认 public abstract。如果继承Thread类,不重写run方法 ,不会报错  ,但是无法指定线程运行的代码。
作者: MeloX    时间: 2014-7-21 21:26
普通类实现接口是需要重写接口定义的抽象方法的,抽象类可以选择性override,不过暂时没有发现这么写的好处
作者: 咖啡苏克    时间: 2014-7-21 21:54
学习了!
作者: MeloX    时间: 2014-7-21 22:01
Thread的run方法的实现源代码

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

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



作者: MeloX    时间: 2014-7-21 22:03
黄晓鑫 发表于 2014-5-20 23:49
虽然不是抽象的 但是Thread实现了Runnable,就得实现Runnable的抽象方法,否则该子类还是接口,不是实现类 ...

解释不完整。。
作者: 王兴旺    时间: 2015-3-18 18:43
看了看   很有水平
作者: lxztravel    时间: 2016-2-27 09:47
Runnable是接口 接口中的方法默认抽象 实现接口要重写所有方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2