一。抽象类可以实现(包括构造函数),而接口不可以有任何的实现,重要的是抽象类可以包含抽象方法,这是普通方法所不能的,抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖他们,接口中所有的方法都必须是为实现的。
二。抽象类中还可以有成员变量(包括静态变量)、属性、常量、和静态方法。并且他们可以是非公共的。但是接口中不能有成员变量,常量,静态方法,只能有公共属性。
三、抽象类可以从另一个类或者一个/多个接口派生。而接口不能从另一个累派生,但是可以实现另一个或者多个接口。
四、一个.net类只能从一个基类中派生,即使这个基类是抽象类。然而一个.net类可以实现多个接口。
相同点:
1.不能实例化。
2.包含未实现的方法声明。
3.派生类必须实现