2011-01-26 48 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 
{ 
}