您的位置:首页 > 编程语言 > C#

C#基础总结——虚方法和抽象方法

2016-02-14 10:42 316 查看
学过C#的人,应该都听过说虚方法和抽象方法,但是对于初学者来说,虚方法和抽象方法,还可能会时常搞混他们的关系。因此我们非常有必要抽出时间,把他们放在一起,进行对比,揭开他们神秘的外纱。

虚方法和抽象方法都可以供派生类重写,那么他们之间有什么区别呢?

虚方法必须有实现部分,而抽象方法必须没有实现部分



<span style="font-size:18px;">public Class Animal//虚方法 
{
         public virtual   void  Sleep()
         {}//实现部分
         //  virtual是虚方法的关键字体
         public virtual   void  Shout()
         {}
}</span>


<span style="font-size:18px;">public abstract Class Animal
{
          public  void  Sleep();
          public  void  Shout();

}</span>
正是因为抽象方法没有实现部分,所以必须强制其派生类重写其实现方法。使其在子类中实现。否则派生类将不能被实例化。(这一点并不用担心,因为如果我们制定一个子类继承抽象父类,那么我们的编译器会自动添加必须重写的方法。)

<span style="font-size:18px;">public Class Cat:Animal
{
     public override void Sleep()
     {
      Console.WriteLine("Cat is sleeping")
     }
       
      public override void Shout()
      {
       Console.WriteLine("cat is Shouting")
      }

}</span>

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

虚方法有一个实现部分,并为派生类提供了覆盖该方法的选项,相反,抽象方法没有提供实现部分,强制派生类覆盖方法;

abstract方法只能在抽象类中声明,虚方法不是。

abstract方法必须在派生类中重写,而virtual则不必。

abstract方法不能声明方法实体,虚方法则可以。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: