1. 程式人生 > >12. 抽象與密封

12. 抽象與密封

靜態 abs 一起 bstr virtual 服務 led 如果 ide

一、抽象類與抽象方法

  1、抽象類與抽象方法聲明
  他們都必須包含關鍵字 abstract ,並且抽象方法不能有方法體。抽象類中可以包含非抽象方法。
  2、抽象類特性:
  (1)抽象類不能實例化,必須通過繼承由派生類來實現其抽象方法。如果派生類沒有實現所有的抽象方法,則該派生類也必須聲明為抽象類。
  (2)抽象類的非抽象子類(即派生類)必須通過重載實現其繼承的所有抽象方法和抽象服務器 。

  3、抽象方法
  (1)抽象非是隱式的虛方法,只允許聲明在抽象類中,不能使用static、private或virtual修飾符;
  (2)重寫抽象方法時采用override 。

  4、抽象方法和虛方法的區別:


  虛方法有實現部分,並且派生類對其重寫是可選的;抽象方法沒有實現部分,並且強制非抽象派生類對其重寫。

  5、abstract修飾符
  (1)他可以和類、方法、屬性、索引器及事件一起使用;
  (2)在類聲明中使用 abstract 修飾符以表明這個類只能是其他類的基類;
  (3)他不能修飾靜態方法或靜態屬性 。

二、密封類與密封方法

  1、密封類
  (1)密封類即不能繼承的類,C#中使用關鍵字 sealed,將類和方法聲明為密封類或者密封方法;
  (2)密封類中不能包含虛方法(virtual)和抽象方法(abstract)。

  2、密封方法
  (1)用修飾符 sealed 進行標記的方法;
  (2

)使用 sealed 修飾符可以防止派生類進一步重寫該方法 。

三、虛方法

  (1)子類可以對父類中的虛方法進行重寫;
  (2定義
如: public virtual void eat();  //使用virtual關鍵字定義
  public override void eat(); //使用override關鍵字進行重寫

12. 抽象與密封