C 隱藏基類方法和重寫

2021-10-03 23:56:52 字數 796 閱讀 4999

本質上來說,是隱藏子類中基類的方法,但在子類中仍然可以訪問該功能

示例如下:

namespace 隱藏基類和重寫

}public class duck: animal

}class program}}

執行結果為:

值得注意的是,若在子類duck中不使用new,**可以正常執行,但會生成乙個警告如下,說明隱藏了乙個基類成員。

警告 cs0114: 「隱藏基類和重寫.duck.walk()」將隱藏繼承的成員「隱藏基類和重寫.animal.walk()」。若要使當前成員重寫該實現,請新增關鍵字 override。否則,新增關鍵字 new。

本質上就是覆蓋。若繼承的成員是virtual,就可用override在子類中進行重寫。

示例如下;

public class animal

}public class duck: animal

}class program

}

區別:無論子類中要被繼承的成員是否為虛擬的,都可以隱藏這些**;重寫的前提是子類中相應的成員必須是virtual。

無論是隱藏基類方法還是重寫,都可以在子類內部訪問基類成員。

在給繼承的虛擬成員新增實現**時,不建議簡單的重寫新實現**替換,建議先呼叫base.walk()後再編寫其他功能

c 隱藏基類方法和重寫基類方法的區別

最近重新學習c 中基礎,找到了隱藏基類方法和重寫基類方法的一點區別,二者都是在派生類中定義了與基類中相同的方法,相同點派生類物件將執行各自的派生類中的方法,不同點,在向上轉型後,重寫基類方法的呼叫的是派生類的方法,而隱藏基類呼叫的是基類的方法,具體實驗 class program 如果乙個方法被子類...

c 隱藏基類方法和重寫基類方法的區別

最近重新學習c 中基礎,找到了隱藏基類方法和重寫基類方法的一點區別,二者都是在派生類中定義了與基類中相同的方法,相同點派生類物件將執行各自的派生類中的方法,不同點,在向上轉型後,重寫基類方法的呼叫的是派生類的方法,而隱藏基類呼叫的是基類的方法,具體實驗 class program 如果乙個方法被子類...

c 隱藏和重寫基類方法的區別

c 隱藏和重寫基類方法的異同 最近正在學習c 對其中的方法重寫和隱藏的概念很是模糊,現在將其歸納如下 1 方法重寫 就是在基類中的方法用virtual關鍵字來標識,然後在繼承類中對該類進行重寫 override 這樣基類中的方法已經被重寫了,已經失去了功能了。當讓基類的物件的引用直接指向繼承類的物件...