我有一些关于重载、线程概念的简单问题要请教各位先进。谢谢!(100分)

  • 主题发起人 主题发起人 vagabond1998
  • 开始时间 开始时间
V

vagabond1998

Unregistered / Unconfirmed
GUEST, unregistred user!
1、重载:
static 方法可以被子类重载吗?
我看到一本书上说:你不能重载static函数![见JAVA2认证指南一书的最后,SCJP模拟题]
但是我试了一下,可以的呀!
2、线程
同一本书上讲,不要直接调线程的run函数,而要使用start()。如果我偏调,
程序会如何进行?
我猜是这样的:因为没有用start注册到 thread scheduler,故
(1)如果run函数没有交出执行权的代码如yield,那么它将一直
执行到run结束,然后死亡(特别的,如果有while,将死循环)
(2)如果run函数有交出执行权的代码如yield,那么它在交出
执行权以后,将再也不能得到再次执行的机会。
3、怎样重新启动一个死亡的线程?
是aThread.start()就又可以重新启动它吗?

 
1.好象是可以的。没有试过:)
2.直接调用run是合法的,但不会产生一个线程
3。没有方法可以重新启动一个死亡的线程
 
1、重载:
static 方法可以被子类重载吗?
我看到一本书上说:你不能重载static函数![见JAVA2认证指南一书的最后,SCJP模拟题]
但是我试了一下,可以的呀!

你当然可以重新声明一个static函数,但新的static函数不支持继承,它无法调用父类
实现的同名函数。
也就是用delphi举例的话,它不支持
Txxx.Somefunction
begin
inherited;
yourcode;
end;
 
static方法没有什么动态特性可言,因此应该没有重载这个概念。我理解重载应该是
出现重叠的情况下才会有的概念。
 
jjams,三点还在上面?佩服。
 
再说点static的override,override的主要目的是为了实现多形性,
而在利用多形性时要将子类句柄upcast为父类句柄,也就是说要生成对象。但static方法
的目的是不要生成对象就可以调用,这样的话,当初设计父类的方法时就不应该标为static。
所以说不要override static方法,如果一定要的话,应该回头看看父类的设计,它的设计有问题。
 
vagabond1998:请继续请继续请继续或结束问题
 
BUG实现前:
eguy 13851 11571 13041
 
多人接受答案了。
 
后退
顶部