C#笔记(八)
继承
继承仅适用于类和接口。
并非所有基类成员都可供派生类继承。 以下成员无法继承:
- 静态构造函数:用于初始化类的静态数据。
- 实例构造函数:在创建类的新实例时调用。 每个类都必须定义自己的构造函数。
- 终结器:由运行时的垃圾回收器调用,用于销毁类实例。
可访问性
虽然基类的其他所有成员都可供派生类继承,但这些成员是否可见取决于它们的可访问性。 成员的可访问性决定了其是否在派生类中可见
Private
只有在基类中嵌套的派生类中,私有成员才可见。否则,此类成员在派生类中不可见。
Protected
受保护成员仅在派生类中可见。
Internal
内部成员仅在与基类同属一个程序集的派生类中可见, 在与基类属于不同程序集的派生类中不可见。
Public
公共成员在派生类中可见,并且属于派生类的公共接口。 可以调用继承的公共成员,就像它们是在派生类中定义一样
重写
派生类还可以通过提供重写实现代码来重写继承的成员。 基类成员必须标记有 virtual 关键字,才能重写继承的成员。
如果尝试重写非虚成员(如以下示例所示),则会生成编译器错误 CS0506:“
在某些情况下,派生类必须重写基类实现代码。 标记有 abstract 关键字的基类成员要求派生类必须重写它们。