是否可以隐藏或阻止继承的protected virtual
或protected abstract
方法,以便进一步的继承类无法访问它们?
例如:
class Base<T>
{
protected abstract T CreateInstance();
}
class Derivative : Base<Derivative>
{
protected sealed override Derivative CreateInstance()
{
return new Derivative();
}
}
class MoreDerivative : Derivative
{
public MoreDerivative()
{
// cannot access CreateInstance here
}
}
我不认为它是用语言实现的,但也许有注释或类似的东西。
最佳答案
没有。当您为一个类型定义一个成员时,您是说该类型及其所有子类型都将拥有该成员。没有办法“撤销”它。这个假设是类型系统的一个组成部分。
你可能想考虑在这里使用组合,而不是继承。创建一个具有 Derivative
类型字段的类型,而不是从它继承。
关于c# - 隐藏继承的 protected 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28177308/