2011-10-18 40 views
1

我想允許我的所有子對象實現靜態方法。例如:強制子對象實現靜態方法

public abstract class A {} 
public class B : A {} 
public class C : A {} 

欲B和C具有的DoSomething()靜態方法中,在那裏將默認實現DoSomething的的()。

這樣做的做法是什麼?

回答

6

你不能這樣做。無論如何,您無法通過多種方式調用的靜態方法。基本上,靜態成員和多態不能一起工作。要麼放棄多態性,要麼創建一個並行類型層次結構,其中這些是實例方法。

+0

你能看到理論上能夠做到這一點的任何優點嗎? – JonAlb

+0

@JonAlb:在某些情況下,是的。例如,請參閱http://msmvps.com/blogs/jon_skeet/archive/2008/08/29/lessons-learned-from-protocol-buffers-part-4-static-interfaces.aspx。 –