我有一个基类和两个派生类:
public abstract class BaseClass {
public IEnumerable<Double> Inputs { get; protected set; }
public BaseClass(IEnumerable<Double> inputs) {
foreach (Double input in inputs)
Compute(input);
}
protected abstract Double Compute(Double input);
}
public abstract class DerivedClass1 : BaseClass {
protected abstract Double Compute(Double input);
}
public class DerivedClass2 : DerivedClass1 {
private override Double Compute(Double input) {
// Compute implementation
}
}
Run Code Online (Sandbox Code Playgroud)
我收到DerivedClass1 Compute方法错误:
“DerivedClass1.Compute(Double)”隐藏继承成员“BaseClass.Compute(Double)”。要使当前成员覆盖该实现,请添加 override 关键字。
如何解决这个问题?
您不需要再次将此方法重新声明为抽象方法,只需将其删除即可:
public abstract class DerivedClass1 : BaseClass {
}
Run Code Online (Sandbox Code Playgroud)
不过,您需要提供一个构造函数,因为BaseClass它没有默认构造函数并且需要实例化一个参数。