c# - C#有私有(private)继承和保护继承的概念吗?

标签 c# inheritance

C# 是否有私有(private)/保护继承的概念,如果没有,为什么?

C++


class Foo : private Bar {
 public:
   ...
 }; 

C#


public abstract NServlet class : private System.Web.UI.Page
{
    // error "type expected"
}

我正在 .aspx 页面中实现“类似 servlet”的概念,我不希望具体类能够查看 System.Web.UI.Page 基础的内部结构。

最佳答案

C# 只允许公共(public)继承。 C++ 允许所有三种类型。公共(public)继承暗示了一种“IS-A”类型的关系,而私有(private)继承暗示了一种“Is-Implemented-In-Terms-Of”类型的关系。由于分层(或组合)以一种可以说更简单的方式实现了这一点,私有(private)继承仅在 protected 成员绝对需要或虚函数需要它时才使用——根据 Effective C++ 中的 Scott Meyers,第 42 项。

我的猜测是,C# 的作者并不认为这种根据另一个类实现一个类的额外方法是必要的。

关于c# - C#有私有(private)继承和保护继承的概念吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33115/

相关文章:

c# - 在 asp.net 中是否有替代 <br/> 的方法?

c# - 如何在 ASP.NET Core 中返回 401 而不是 302?

c# - Segoe UI 符号 - 以编程方式

c++ - 在 C++ : template argument deduction/substitution failed 中继承类时出错

python - 为什么 super().__init__ () 的行为与 Python 派生类中的 super().override() 不同?

c# - 使用传入的参数作为搜索字段使用 Entity Framework Web API 创建动态搜索查询

c# - SimpleITK - 如何获得图像中的最大和最小强度?

java - 捕获返回基类型或派生类型的方法的返回值

php - 在 php 中使用私有(private)构造函数扩展类与版本 5.1 到 5.4 不同

c++ - 具有派生成员函数指针的多态性?