是否可以隐藏或阻止继承的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/