【问题标题】:Methods signatures in a parent class that don't have to be overriden?不必重写父类中的方法签名?
【发布时间】:2014-03-14 11:09:03
【问题描述】:

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

protected abstract void FilterByLetter(char a);

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

实际上,从它继承的每个类中只需要使用其中一个。有没有办法让一个被覆盖而没有另一个?

【问题讨论】:

  • 将其他类注释为Sealed ..

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


【解决方案1】:

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

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
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2011-02-23
    • 1970-01-01
    • 2018-01-15
    • 2016-05-30
    相关资源
    最近更新 更多