Class & Struct

  1. 类存储在堆上,结构存储在栈上
  2. 结构不支持实现继承,但支持接口继承
  3. 结构是值类型,结构派生于System.ValueType
  4. 结构不能定义无参数的构造函数

继承

  1. 实现继承
  2. 接口继承
  3. 不支持多重继承

object

object是关键字,它是System.Object类的假名。

虚函数virtual

  1. 函数默认不是虚函数,需要virtual指定虚拟,重写函数时,必须指定override, override关键字是为了方便编译器识别重写签名的笔误错误。
  2. 调用方法时,会调用对象类型的合适方法

隐藏方法

  1. 当签名相同的方法在基类和派生类都进行了声明,且没有声明为virtual和override,那么派生类会隐藏基类的方法。
  2. 派生类会自动继承基类的方法。
  3. C#不支持多重继承,所以可通过base.()调用基类方法。

抽象类

  1. 抽象类不能实例化,可以用abstract修饰类,如果没有修饰抽象类,如果有抽象函数,那该类也会自动转为抽象类。
  2. 抽象函数不能有实现代码,必须在非抽象的派生类中重现。
  3. 抽象函数类似于虚函数,需要在派生类中重写。

密封类 sealed

该类不能被继承。

new修饰符

在用作声明修饰符时,new 关键字可以显式隐藏从基类继承的成员。 隐藏继承的成员时,该成员的派生版本将替换基类版本。 虽然可以不使用 new 修饰符来隐藏成员,但将收到编译器警告。 如果使用 new 来显式隐藏成员,将禁止此警告。