第4章 继承
隐藏方法 new
抽象类和抽象函数 abstract
关键字abstract声明,包含抽象函数的类是抽象类,抽象类不能实例化,抽象函数不能直接实现,必须在非抽象的派生类中重写
abstract class Building
{
public abstract void print();//abstract method,没有实现代码
}
class House:Building
{
public override void print()
{
//do something
}
}
密封类和密封方法 sealed
关键字sealed声明,对于类,表示不能继承该类,对于方法,表示不能重写该方法
sealed class FinalClass{}
修饰符
修饰符
应用于
说明
public
所有类型或成员
任何代码都可以访问该项
protected
类型和内嵌类型的所有成员
只有派生的类型能访问该项
internal
所有类型或成员
只能在包含它的程序集中访问该项
private
类型和内嵌类型的所有成员
只能在它所属的类型中访问该项
protected internal
类型和内嵌类型的所有成员
只能在包含它的程序集和派生类型的任何代码中访问该项
new
函数成员
实例化,隐藏同名成员
static
所有成员
定义类级别成员
virtul
仅函数成员
指定成员可以被override
abstract
仅函数成员
定义函数为虚函数,没有提供实现代码
override
仅函数成员
重写virtual或abstract的函数
sealed
类,方法,属性
对于类,表示不能继承该类,对于方法,表示不能重写该方法
extern
仅静态[DllImport]方法
成员在外部用另一种语言实现?
不能把类定义为protected, private和protected internal,因为这些修饰符对于包含在命名空间中的类没有意义。
internal可以为什么protected internal不行?
接口 interface
一般情况下,接口只能包含方法、属性、索引器和事件的声明,不允许提供任何接口中成员的实现方式。
不能有构造函数,不能有字段,不允许包含运算符重载,不允许声明关于成员的修饰符(virtual,static等)