标签:
一、虚方法和抽象方法的区别:
1、抽象方法只能在抽象类里面声明,而且抽象方法不能有实现(不能有方法体)。
2、虚方法在声明时必须有实现。
public abstract class test {
/// 在抽象类中声明了抽象方法
public abstract string AbstractMethod();
/// 虚方法
public virtual string VirtualMethod()
{
return "this is a Virtual Method in Abstract Class!";
}
}
3、派生的子类中,必须要重写基类的抽象方法,虚方法则不一定要重写。
二、虚方法和抽象方法的相同点:
1、都可以被派生类重写(overwrite)。
三、两者各自使用场景:
完全不知道要怎么做的场景,使用抽象方法,知道了一部分怎么做的场景则使用虚方法。
四、抽象类和接口的区别:
1、抽象类可以定义字段、属性、方法的实现,接口只能声明属性、索引器、事件和方法声明,不能有字段。
2、接口可以被多重实现,抽象类只能被单一继承。
3、抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范。
4、接口可以用于支持回调,而继承并不具备这个特点。
五、抽象类和接口的相同点:
1、都可以被继承
2、都不能实例化
3、都可以包含方法声明
4、派生类必须实现未实现的方法
C#虚方法(Virtual)、抽象方法(Abstract),接口(Interface)、抽象类的区别
标签:
原文地址:http://www.cnblogs.com/Leo-lu/p/5347624.html