How to hide static method

2020-03-26 20:50发布

问题:

Let's say I have a classes, like that:

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

How can I hide this static method for class B but not for C?

回答1:

You can't, basically. Heck, if it's public then anyone can call it.

You could make it protected which would allow it to be called from within B or C but not elsewhere... but you still couldn't differentiate between B and C.



回答2:

You could do it by creating another class, let's call it Special, that inherits A. Then you would make C inherit from Special and B inherit from A. Also, you would have the static method protected, that means only classes that inherited Special will have access to it.

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


回答3:

The only solution would be to change your class hierarchy. It's not worth the hassle and WTF moments you will get in code reviews it if you ask me.

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