抽象类:
在程序中使用关键字abstract
如果说正常类是一个完整的类的话,抽象类实际上是一个不完整的类
抽象类的特点:
1.如果类中存在抽象方法,那么该方法不可以有实现部分,只能声明方法。
2.含有抽象方法的类一定是抽象类
3.抽象类不一定含有抽象方法
4.如果子类的父类为抽象类并且含有抽象方法的话,子类必须实现重写该抽象方法
5.vinrual和abstract 不能使用 private 修饰符,要使用public修饰符
6.virtual不能和abstract放在一起用
7.抽象类不能被实例化
8.抽象类可以包含静态成员
抽象了的作用:
父类约束子类行为。
虚方法和抽象方法的探讨
虚方法和抽象方法都可以供派生类重写
1.虚方法必须有实现部分,并且为派生类提供了重写该方法的选项.
public virtual void Say(); //错误
2.抽象方法没有实现部分,并且抽象方法的派生是一种强迫性的
继承抽象类就必须实现抽象方法,这与Virtual是不同的
3.抽象方法只能在抽象类中进行声明.抽象方法必须在派生类重写
含有抽象的方法必然是抽象类.也就是说必须强制声明abstract,系统不会自动为我们添加
4.抽象方法必须在派生类重写,这一点和interface类似,虚方法不必
虚方法和抽象的联系:
1.无论是虚方法或者抽象方法,重写必须使用override关键字
面向接口编程.
接口:接口就是公共契约
接口的关键字:interface
接口和类属于同级关系,都属于C#中额编程
接口也被称为纯洁的抽象类
接口特点:
1.接口不能有字段
2.接口内不能有修饰符
3.接口中不能有方法体(方法实现)
4.接口不可以被直接实例化
5.接口成员总是公共的
6.接口中可以有属性,但是不能有修饰符
7.接口中可以有索引器/事件声明
8.接口中声明的方法,子类实现的时候虽然也用override关键字,但是不属于重写,这里不能把override显示的声明出来