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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 莫运飞 中级黑马   /  2012-4-26 01:32  /  2577 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package ticket2;
class Thread {

public static void main(String[] args) {
  
  Ticket t=new Ticket();
  
   t.start();//为什么这里报错,说找不到t??????????
}

}
class Ticket extends Thread{


int x=100;
public void run() {//将run改成start程序又可以运行了。。。Thread不是要有run方法吗,怎么改成start也可以运行呢????
while(true){
   if(x>0){
   System.out.println( " --->  "+x--);
   
   
   
   }
  
}


}

}


6 个回复

倒序浏览
第二行class Thread{}类的名字给改了
改成start就相当于直接调用这个start方法,和线程没关系了,就是一个普通方法
回复 使用道具 举报
这是你把Thread类给重新写了,你定义的main函数的类名怎么可以叫Thread??
这样你下面的类基础你自己写的Thread,而你Thread类有没有start方法,怎么可以调用;
把类名改了就行;
回复 使用道具 举报
java类名不能是关键字和java已有的类名,你第一个类把java类中的Thread类重写了 ,而重写的类名有没有start()方法,
回复 使用道具 举报
首先 class Ticket extends Thread 你是想继承的Thread类,

不是你自己定义的那个主函数,先把主函数名改了。

而下面的Ticket类 里面没有复写 start()函数;

所以会出现这样

//将run改成start程序又可以运行了
回复 使用道具 举报
把Thread类的名称修改一下,否则就是普通的子父类继承关系,出现了上面的start方法名必须和run方法名一致的情况
回复 使用道具 举报
金超 中级黑马 2012-4-29 13:20:11
7#
你自己定义的class Thread与JAVA API中的Thread类重名了,class Ticket 继承的是你自己定义的Thread而不是JAVA API中的Thread,所以调用t. t.start();时就会报错,解决的办法是把你自己定义的Thread这个类该下名字。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马