方法父类中的签名不必被覆盖?

时间:2014-03-14 11:09:03

标签: c# asp.net asp.net-mvc inheritance polymorphism

我有一个父类,它包含两个采用不同参数的同名方法:

protected abstract void FilterByLetter(char a);

protected abstract void FilterByLetter(char a, char b);

在实践中,只需要在从它继承的每个类中使用其中一个。有没有办法让一个人在没有另一个人的情况下被覆盖?

1 个答案:

答案 0 :(得分:3)

创建两个新的抽象基类,只覆盖其中一个方法并从中继承子项:

public abstract class A : OriginalBaseClass
{
    protected override void FilterByLetter(char a)
    {
        // Don't do anything
    }
}

public abstract class B : OriginalBaseClass
{
    protected override void FilterByLetter(char a, char b)
    {
        // Don't do anything
    }
}

public class ClassThatNeedsOnlyTwoParameterOverload : A
{
    protected override void FilterByLetter(char a, char b)
    {
        // Add necessary code
    }
}

public class ClassThatNeedsOnlyOneParameterOverload : B
{
    protected override void FilterByLetter(char a)
    {
        // Add necessary code
    }
}