抽象类
- C#允许把类和函数声明为 abstract
- 抽象类不能实例化,抽象类可以包含普通函数和抽象函数,抽象函数就是只有函数定义没有函数体
- 显然,抽象函数本身也是虚拟的Virtual(只有函数定义,没有函数体实现)
- 类是一个模板,那么抽象类就是一个不完整的模板,我们不能使用不完整的模板去构造(初始化)对象。
abstract class Building
{
public abstract decimal CalculateHeatingCost();
}
- 当你知道一个父类被继承时,它的有个函数一定会被重写,那么这个函数就可以用抽象函数
- 使用了抽象函数,那么类也需要写成抽象函数,用abstract class定义而不是class
- 当继承了抽象类的时候必须去实现抽象方法
实例
namespace learn_c_1
{
abstract class Bird
{
private int a;
public abstract void Fly();
}
}
namespace learn_c_1
{
class Crow : Bird
{
public override void Fly()
{
Console.Write("Crow的方法");
}
}
}
当你写抽象类的子类时,可以点击蓝色字,自动补全。
密封类
- C#允许把类和方法声明为 sealed。 对于类 ,这表示不能继承该类
- 对于方法表示不能重写该方法。(重写的方法才可以被密封)
sealed FinalClass
{
// etc
}
什么时候使用 密封类和密封方法?
防止重写某些类导致代码混乱
商业原因