亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于方法的重寫

關于方法的重寫

千巷貓影 2018-08-10 08:06:55
請看代碼: 1 public abstract class ViewBaseContainer : Page  2  {  3     protected abstract ControllerBaseContainer CreateConcreteContainer (Page owner);  4  }  5 public class BasePage : ViewBaseContainer   6 {  7     protected override ControllerBaseContainer CreateConcreteContainer(BasePage owner)  8     {  9     } 10 }在BasePage中重寫方法CreateConcreteContainer(),傳遞的參數是BasePage的對象,會導致編譯失敗,這里傳遞的參數必須為Page的對象嗎?為什么?
查看完整描述

2 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

因為override基類的virtual方法必須保證簽名相同,參見:C#語言規范4.0,第1.6.6.4節。摘錄如下:

1.6.6.4 虛方法、重寫方法和抽象方法

若一個實例方法的聲明中含有 virtual 修飾符,則稱該方法為虛方法 (virtual method)。若其中沒有virtual 修飾符,則稱該方法為非虛方法 (non-virtual method)。

在調用一個虛方法時,該調用所涉及的實例的運行時類型 (runtimetype) 確定了要實際調用的方法實現。在非虛方法調用中,實例的編譯時類型 (compile-timetype) 負責做出此決定。

虛方法可以在派生類中重寫 (override)。當某個實例方法聲明包括 override 修飾符時,該方法將重寫所繼承的具有相同簽名的虛方法。虛方法聲明用于引入新方法,而重寫方法聲明則用于使現有的繼承虛方法專用化(通過提供該方法的新實現)。


查看完整回答
反對 回復 2018-08-13
?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

 既然叫重寫 那么函數簽名肯定就必須相同。必須傳Page對象 

你重寫的時候傳的Page對象  調用的時候可以傳BacePage對象 呵呵  繼承關系兩者


查看完整回答
反對 回復 2018-08-13
  • 2 回答
  • 0 關注
  • 537 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號