隐藏派生类方法?

时间:2010-09-03 06:40:29

标签: c# inheritance language-features

我们可以隐藏派生类的公共方法,以便在C#的Main()函数中无法访问它。我们无法更改派生类方法的访问器。

public class A
{
    public void Add()
    {
    }    
}       

public class B : A 
{
    public void Multiply()
    {
    }        
}

在C#中的main()方法

B b = new B();
b.mulitply(); // should give compile time error... Like method not founded.

我们有什么方法可以做到。

4 个答案:

答案 0 :(得分:5)

绝对不是。这是公共课的公共方法。如果您不能使用它,则不应公开。

(顺便说一句,我看不出它来自A的事实是如何相关的。)

答案 1 :(得分:1)

这个请求没有任何意义。 B类声明方法Multiply。为什么这种方法会被隐藏?隐藏谁?

答案 2 :(得分:0)

为什么不把这个方法设为私有?

public class B: A
{
  private void Multiply()
  {
  }
}

如果你绝对无法改变B,那么我唯一能想到的就是创建一个完整的适配器类。

public C
{
  private B instance;

  private void Multiply(){}

  public void Add()
  {
    B.Add();
  }
}

这将迫使你“复制”B中的所有方法,除了你想要的那个。

如果您绝对需要将该类设为“B”,则必须使用反射器反转引擎并将公共字段更改为私有或受保护。

答案 3 :(得分:0)

公开的功能点是它可以在其他地方访问。

你可以私下继承吗? (没有意义)或者将成员声明为私有或受保护,因此派生类不会继承它。