黑马程序员技术交流社区
标题:
求助 求助
[打印本页]
作者:
莫运飞
时间:
2012-4-7 02:28
标题:
求助 求助
class Ticket implements Runnable
{
private static int ticket=50;
public static void run()
//静态函数能够访问静态函数变量,非静态函数可以访问非静态函数变量,
//静态与非静态不能互相访问。那为什么 我这这里的run()方法以及静态上了,且ticket也用上了静态。
//为什么在这里还编译出错呢?错误:Ticket中的run()无法实现Runnable中的run() public static void run()
//难道是 Runnable中的run()方法没有实现 静态造成的?????????? 不解啊 !!!!!!(这里去掉Static 可以运行)
{
while(true)
{
if(ticket>0)
{
System.out.println(Thread.currentThread().getName()+"......"+ticket--);
}}}}
class Demo
{
public static void main(String[] args)
{
Ticket t=new Ticket();
Thread t1=new Thread(t);
Thread t2=new Thread(t);
Thread t3=new Thread(t);
t1.start();
t2.start();
t3.start();
}
}
作者:
吴高其
时间:
2012-4-7 03:16
因为接口中的方法默认被abstract public修饰,接口中的成员变量默认被public static final修饰。
所以,你在实现接口中的方法时是不能用static修饰的。
非静态成员可以反问静态成员。
作者:
吴玉辉
时间:
2012-4-7 07:50
创建线程后,t1.start();表示开启线程,调用Thread对象的run方法。所以你复写run方法如果被static修饰的话,Thread对象无法调用该run方法。此时t1.run()不符合语法规则。
作者:
郑强强
时间:
2012-4-7 07:53
接口中所有的成员变量都隐含的是public static final,因此接口中的成员变量都是静态最终变量,接口中的所有方法都隐含的是public和abstract,不可以用static,final等其他修饰符。在实现某接口的类不是abstract修饰的抽象类,必须则必须在类的定义中实现接口的所有抽象方法,而且方法头部分应该与接口的定义完全一致,即有完全相同的返回值和参数列表,如果实现某接口的类是abstract修饰的抽象类,则可以不用实现接口的全部方法。但是,在这个抽象类的非抽象子类中,都必须有他们父类所实现的接口中所有抽象方法实现的方法体。接口的抽象方法的访问控制符都已被指定public,所以实现这些方法时,必须显式使用public修饰符,否则会缩小所定义方法的访问范围
作者:
莫运飞
时间:
2012-4-7 08:42
学习了 谢谢
作者:
孙国军
时间:
2012-4-7 10:06
public static void run()//静态函数能够访问静态函数变量,非静态函数可以访问非静态函数变量,
//静态与非静态不能互相访问。那为什么 我这这里的run()方法以及静态上了,且ticket也用上了静态。
//为什么在这里还编译出错呢?错误:Ticket中的run()无法实现Runnable中的run() public static void run()
//难道是 Runnable中的run()方法没有实现 静态造成的?????????? 不解啊 !!!!!!(这里去掉Static 可以运行)
{
在继承函数或者接口时,非静态函数不可以被非静态函数所覆盖
作者:
孙国军
时间:
2012-4-7 10:07
写错啦,
在继承函数或者接口时,非静态函数不可以被静态函数所覆盖
作者:
pray
时间:
2014-4-26 03:47
让人看后在各论坛纷纷转贴的好帖
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2