原则:
1、抽象函数对应于C++中的纯虚函数,
虚函数:是有具体实现,可以在子类中重写的函数
纯虚函数(抽象函数):没有任何实现,在子类中必须的进行重写才能实例化(子类是抽象类时除外)
2、含有抽象函数的类,必然是抽象类
假设能够实例化,那实例化的对象调用这个函数的时候,执行什么代码呢?
3、纯虚函数=0写法的改变
从这个写法的改变,说明了C#中默认构造函数的功能不同
C++中的默认构造函数只能提供0意义的初始值
C#中的默认构造函数出了能够提供0意义的初始化值之外,还能根据类定义中给出的初始化值来进行构造
class A
{
public int i = 1;
public void fun(){}
}
在C++中,出了静态数据成员能够这样(同时也是必须)给出初始化值,其他普通数据成员必须在构造函数中进行初始化。
所以因为C#中给了数据成员这样赋初始化值的语法形式,为了避免形式的混乱,所以取消了抽象函数(纯虚函数)=0的语法形式的