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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 坚强 黑马帝   /  2011-11-13 09:52  /  1507 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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, 下载次数: 5)

未命名.jpg

5 个回复

倒序浏览
本帖最后由 宋文轩 于 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:36
藤椅
这个问题你要理解什么叫做覆盖,另外就是静态的特点。什么叫覆盖?函数的声明完全一样,而内容不一样,你静态后加载类的时候就直接加载了,而不是通过对象加载,明白吗?
回复 使用道具 举报
static那个地方出错了!
回复 使用道具 举报
当Demo类继承了Thread类后,要覆盖run()方法,但是加入static 后就不再是复写run()方法了,而是重新定义了一个方法.
回复 使用道具 举报
坚强 黑马帝 2011-11-13 22:51:17
地板
o 我明白了  结合沙发和报纸的回复,我明白了,关键还在抽象方法不可以静态吧?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马