黑马程序员技术交流社区
标题:
多线程小问题
[打印本页]
作者:
坚强
时间:
2011-11-13 09:52
标题:
多线程小问题
class Demo extends Thread
{
public static void run()
{
System.out.println("Thread run");
}
}
复制代码
为什么复写run方法时不可以将它静态,会有下面这样的提示?
未命名.jpg
(16.27 KB, 下载次数: 27)
下载附件
2011-11-13 09:52 上传
作者:
宋文轩
时间:
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