这个问题,你要明白:
1.虚方法其目的就是为了重写,但它可以有自己的实现部分。
2.抽象方法:其名为抽象,很好理解,其不能提供具体的实现,只是一个可重写的(隐性的)虚方法的(可以理解为接口)模版。
3.这两个方法都是为了再次重写和实现,所以都不能密封
C#的重载:普通的重载是通过方法的参数个数,参数顺序,参数的类型来区分同名的方法。
在实现多态的时候,对基类方法的重载是函数重载的另一种形式,在派生类中重新定义次虚方法时,要求的是方法名称,返回值类型,参数表中的参数个数,类型,顺序都必须与基类的虚函数完全一致,加上关键字override
虚函数与抽象办法的区别:虚方法是加上virtual 抽象方法是加上abstract
虚方法可以有声明部分,抽象方法没有
例:public abstract void speak(); //抽象方法
public virtual void speak(){
console.writeline("你好");
}
抽象方法只能在抽象类里声明
继承的时候,抽象方法和虚方法都是用关键字override重载的