簡體   English   中英

使用從繼承的類到基類的方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM