黑马程序员技术交流社区

标题: 多线程小问题 [打印本页]

作者: 坚强    时间: 2011-11-13 09:52
标题: 多线程小问题
  1. class Demo extends Thread
  2. {
  3.         public static void run()
  4.         {
  5.                 System.out.println("Thread run");
  6.         }
  7. }
复制代码
为什么复写run方法时不可以将它静态,会有下面这样的提示?

未命名.jpg (16.27 KB, 下载次数: 27)

未命名.jpg

作者: 宋文轩    时间: 2011-11-13 10:24
本帖最后由 宋文轩 于 2011-11-13 11:28 编辑

这个继承了thread的类必须要覆盖 thread中的run方法 thread本身的run方法是实现了Runnable接口的方法,所以必须符合Runnable接口中run()方法的规则,run方法本身默认的修饰是public abstract void run(),abstract和static是不可以同时存在的。 如果加上static那随着类的加载 方法就已经加载了,就不需要建立对象了,那要接口提供抽象方法就没实现的意义了。
作者: 咪咪    时间: 2011-11-13 11:11
这个问题你要理解什么叫做覆盖,另外就是静态的特点。什么叫覆盖?函数的声明完全一样,而内容不一样,你静态后加载类的时候就直接加载了,而不是通过对象加载,明白吗?
作者: 胡文杰    时间: 2011-11-13 11:35
static那个地方出错了!
作者: quanhui    时间: 2011-11-13 12:51
当Demo类继承了Thread类后,要覆盖run()方法,但是加入static 后就不再是复写run()方法了,而是重新定义了一个方法.

作者: 坚强    时间: 2011-11-13 22:51
o 我明白了  结合沙发和报纸的回复,我明白了,关键还在抽象方法不可以静态吧?




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