相关疑难解决方法(0)

为什么我们不能在覆盖C#中的方法时更改访问修饰符?

在C#中,我们无法在从基类重写方法时更改访问修饰符.例如

Class Base
{
   **protected** string foo()
   {
       return "Base";
   }
}

Class Derived : Base
{
   **public** override string foo()
   {
       return "Derived";
   }
}
Run Code Online (Sandbox Code Playgroud)

这在C#中无效,会产生编译时错误.

我想知道原因,为什么不允许这样做.是否存在任何技术问题,或者是否会导致访问限制方面不一致的问题?

c# oop access-modifiers

44
推荐指数
2
解决办法
2万
查看次数

标签 统计

access-modifiers ×1

c# ×1

oop ×1