回覆列表
  • 1 # 使用者96343397862

    抽象方法:對應關鍵字 abstract 抽象方法只能在抽象類中宣告,不能有方法體,必須在派生類中實現方法體 虛方法:對應關鍵字 virtual 在c#中,虛方法是為派生類重寫父類的方法做準備的,只有宣告為虛方法,在派生類中才可以使用override方法對其進行重寫,另外,虛方法可以具有方法體

  • 2 # 使用者2458114238191884

    先說說區別:

    1、虛方法必須有實現部分,抽象方法不可以有實現部分;

    2、虛方法可以在派生類中重寫也可以不重寫,抽象方法必須在派生類中重寫

    3、虛方法可以在任何非密封類中宣告,抽象方法只能在抽象類中宣告。

    4、如果類包含抽象方法,那麼該類也必須為抽象的,不能例項化。

    相比而言,虛方法傾向於程式碼複用,抽象方法更類似一種規約來約束子類必須實現某方法。

    舉個例子(未必恰當、只為說明問題):

    比如有個基類“動物”;兩個子類“獅子”、“青蛙”。

    獅子捕獵:鎖定目標、用牙齒和利爪抓獲;

    獅子說話:噢嗚;

    青蛙捕獵:鎖定目標、用舌頭抓獲;

    青蛙說話:呱呱;

    對於捕獵,他們有共性也有區別:

    所以就可以把捕獵宣告為虛方法,基類裡實現共性部分、各子類實現個性部分;

    對於說話,完全不同,但是又必須讓他們說話——否則成植物了,呵呵:

    所以就可以把說話宣告為抽象方法,基類只宣告此方法來作為約束,強制子類實現。

  • 中秋節和大豐收的關聯?
  • 分子和原子的本質區別是什麼?