abstract class 和 interface有什么区别

  一。抽象类可以实现(包括构造函数),而接口不可以有任何的实现,重要的是抽象类可以包含抽象方法,这是普通方法所不能的,抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖他们,接口中所有的方法都必须是为实现的。

   二。抽象类中还可以有成员变量(包括静态变量)、属性、常量、和静态方法。并且他们可以是非公共的。但是接口中不能有成员变量,常量,静态方法,只能有公共属性。

三、抽象类可以从另一个类或者一个/多个接口派生。而接口不能从另一个累派生,但是可以实现另一个或者多个接口。

四、一个.net类只能从一个基类中派生,即使这个基类是抽象类。然而一个.net类可以实现多个接口。

相同点:

    1.不能实例化。

    2.包含未实现的方法声明。

    3.派生类必须实现

原文地址:https://www.cnblogs.com/weiying/p/weiying06_12.html