2011-01-26 53 views
2

比方說,我有一個班,這樣的:如何隱藏靜態方法

class A 
{ 
    public static int Count() 
} 
class B : A 
{ 
} 
class C : A 
{ 
} 

我怎樣可以隱藏B類此靜態方法而不是對C?

回答

9

基本上,你不能。哎呀,如果它是公開的,然後任何人都可以打電話給它。

你可以把它保護這將使其能夠從B或C中的其它地方被稱作但不...但你仍然無法B和C之間的區分

0

您可以通過創建另一個做類,我們稱之爲Special,繼承A.然後,您將使C繼承自Special並從B繼承A.此外,您將擁有靜態方法protected,這意味着只有繼承了Special的類才能訪問它。

class A 
{ 
} 
class Special : A 
{ 
    protected static int Count() 
} 
class B : A 
{ 
} 
class C : Special 
{ 
} 
0

唯一的解決辦法是改變你的類層次結構。 如果你問我,這不值得麻煩和WTF的時刻,你會得到代碼評論。

class ABase 
{ 
} 
class A 
{ 
    public static int Count() 
} 
class B : ABase 
{ 
} 
class C : ABase 
{ 
}