c# - 隐藏继承的 protected 方法

标签 c# inheritance protected

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

相关文章:

c# - 使用字典创建对象的新实例

c# - 带 % 的参数化查询

c++ - 如何为派生类通用地实现复制构造函数?

oop - 如何在 Raku 中定义 protected 方法?

Java 继承和访问修饰符

c# - C# 中的 MVC 与 VB 中的 Webforms 共存。它会发生吗?

c# - 检查 DateTime 变量是否已赋值

java - 在构造函数内调用另一个构造函数和父级的构造函数

javascript - 回调引用和继承javascript

c# - 使用 Twitter API 获取 protected 推文