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/