[英]Using a method from inherited class through base class
所以我無法在任何地方找到答案。 我有一個實體類,可以從中創建游戲中的所有角色。 例如:玩家繼承實體。
現在,我要做的是從實體類中調用Player中的“ Update”方法。 這可能嗎? 因為我需要為現在創建的每個新實體類型執行此操作:
foreach (Entity entity in entityList) {
if (entity is Zombie) {
Zombie zombie = (Zombie)entity;
zombie.Update();
}
//new character here
}
提前致謝!
如果“更新”的概念適用於所有實體,你可以做Update
的虛擬功能Entity
,讓Player
覆蓋它。 然后,在Entity
成員函數內部,您只需要在特定Entity
對象上調用Update()
並讓該調用動態分配:
foreach (Entity entity in entityList) { entity.Update(); }
如果Update()
對於所有Entity
都沒有意義,那么將它們作為Entity
的虛函數會污染該類的接口,在我看來,您的選擇是正確的。
如果要避免動態下降,也可以考慮使用“ 訪問者模式” 。
重寫子類中的Update()
方法。 然后,只需為任何遇到的實體調用entity.Update()
。 這就是所謂的多態性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.