C#虚方法(Virtual)抽象方法(Abstract),接口(Interface)抽象类的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#虚方法(Virtual)抽象方法(Abstract),接口(Interface)抽象类的区别相关的知识,希望对你有一定的参考价值。

一、虚方法和抽象方法的区别:

  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)抽象类的区别的主要内容,如果未能解决你的问题,请参考以下文章

C# 抽象方法和虚方法的区别

一文读懂C#中的抽象类抽象方法virtual虚函数override重写函数及父类子类构造函数和析构函数的执行顺序

c#中啥情况用abstract,啥情况下用virtual

C#中的virtula是啥?

c#多态之抽象类与虚方法的异同点~

总结下抽象类Abstract和虚方法Virtual(易混点)