Gök*_*urt 0 c# polymorphism inheritance abstract-class overriding
我有一个抽象类,它有一个带params参数的方法,如下所示.我想用一个方法覆盖和隐藏这个方法,该方法在继承类时需要一定数量的参数而不是params.
public abstract class BaseClass{
public List<int> list = new List<int>();
public void Add(params int[] numbers){
list.AddRange(numbers);
}
}
public class ChildClass : BaseClass{
public override void Add(int a, int b, int c){
base.Add(a, b, c);
}
}
Run Code Online (Sandbox Code Playgroud)
这工作但基类的添加功能仍然可见外部,子类中的添加功能似乎不会覆盖它.有办法吗?
我想用一个方法覆盖和隐藏这个方法,该方法在继承类时需要一定数量的参数而不是params.
你不能.这会打破继承.请考虑以下代码:
BaseClass bc = new ChildClass();
bc.Add(0, 1);
Run Code Online (Sandbox Code Playgroud)
那必须编译 - 所以你期望它做什么?如果您期望使用3个参数替换原始方法,那么可能您不希望编译 - 但编译时类型bc只是BaseClass,而不是ChildClass.
您可以重载 BaseClass.Add(您不需要new因为它没有与基类方法相同的签名),但您不能用更严格的形式替换它.
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |