【问题标题】: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);
实际上,从它继承的每个类中只需要使用其中一个。有没有办法让一个被覆盖而没有另一个?
【问题讨论】:
标签:
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
}
}