程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#基礎概念二十五問(11)

C#基礎概念二十五問(11)

編輯:關於C語言

11.可以使用抽象函數重寫基類中的虛函數嗎?

答:

可以

需使用 new 修飾符顯式聲明,表示隱藏了基類中該函數的實現

或增加 override 修飾符,表示抽象重寫了基類中該函數的實現

示例:

  class BaseClass
  {
    public virtual void F()
    {
      Console.WriteLine("BaseClass.F");
    }
  }
  abstract class DeriveClass1 : BaseClass
  {
    public abstract new void F();
  }
  //感謝watson hua(http://huazhihao.cnblogs.com/)的指點
  //是他提醒了我還可以用這種方法抽象重寫基類的虛方法
  abstract class DeriveClass2 : BaseClass
  {
    public abstract override void F();
  }

12.密封類可以有虛函數嗎?

答:

可以,基類中的虛函數將隱式的轉化為非虛函數,但密封類本身不能再增加新的虛函數

示例:

  class BaseClass
  {
    public virtual void F()
    {
      Console.WriteLine("BaseClass.F");
    }
  }
  sealed class DeriveClass : BaseClass
  {
    //基類中的虛函數F被隱式的轉化為非虛函數
    //密封類中不能再聲明新的虛函數G
    //public virtual void G()
    //{
    //  Console.WriteLine("DeriveClass.G");
    //}
  }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved