抽象类的特点总结
c#允许把类和函数声明为abstract,抽象类不能实例化,抽象类可以包含普通函数和抽象函数,抽象函数就是只有函数定义,没有函数体。显然抽象函数本身也是虚拟的virtual(只有函数定义,没有函数体实现)。
类是一个模板,那么抽象类就是一个不完整的模板,我们不能使用一个不完整的模板去构造对象。
Abstract class Building
{
Public abstract decimal CalCulatePrice();
}
抽象类的特点:
1.抽象成员必须标记为abstract,并且不能有任何实现。
2.抽象成员必须在抽象类中。
3.抽象类不能被实例化。
4.子类继承抽象类后,必须把父类中的所有抽象成员都重写。除非子类也是一个抽象类,在则可以不重写。
5.抽象成员的访问修饰符不能是private。
6.在抽象类中可以包含实例成员,并且抽象类的实例成员可以不被子类实现。
7.抽象类是有构造函数的,虽然不能被实例化。
8.如果父类的抽象方法中有参数,那么继承这个抽象父类的子类在重写父类的方法的时候,必须传入对应的参数。
9.如果抽象父类的抽象方法中有返回值,那么子类在重写这个方法的时候也必须要传入返回值。
10.如果父类的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义为普通类,用虚方法来实现多态。
11.如果父类的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类。