抽象类是特殊的类,它不能被实例化,只能作为其它类的基类而存在,其目的是抽象出子类的公共部分以减少代码重复。
抽象方法是一种特殊的虚方法,它只能定义在抽象类中,抽象方法没有任何执行代码,需要在派生类中用重写的方式具体实现(除非派生类依旧是抽象类)。
除了抽象方法外,我们还可以在抽象类中定义抽象属性。抽象属性也没有具体实现代码,必须在派生类中重写。
abstract class A{
public abstract void P();
}
一个抽象类的子类还是抽象类,除非子类实现了父类中所有的抽象方法。
class B:A{
public override void P(){
}
}
总结:
抽象类不能产生对象
抽象方法没有方法体
抽象类中不一定包含抽象方法
含有抽象方法的类一定是抽象类
一个抽象类的子类仍旧是抽象类,除非它实现了父类中所有的抽象方法
密封类(Sealed class)是一种不能被继承的类,用 sealed 关键字声明。
同样,如果想防止一个方法被派生类重写,可以用 sealed 关键字把它为声明密封方法。