我有一个名为add2JSON("Daily Breads","Apple Streusel");
的类,其中包含函数,称为Party
。我创建了一个名为OnMemberDeath()
的新类,它继承自PlayerParty
,现在我只需要向Party
函数添加两行但非常重要的行(示例如下)。是否可以仅覆盖方法的一部分?
派对类负责检测回合制战斗物。此外,每个缔约方都有成员(实体)和SelectionOrb(他们下面的小圈子)。当一方成员去世时,必须选择新成员。通过成员选择过程,SelectionOrb必须接收新的父(AdjustWorldObject())以及必须分配对所选成员的引用(对于战斗内容)。如果没有活动成员,我们需要将父设置为OnMemberDeath( )
,以便SelectionOrb不会与Member对象一起删除。
在PlayerParty类中有新对象,即CombatUI,它的作用与SelectionOrb基本相同(必须在当前死亡后接收新的父对象)。希望这很清楚:)。
null
答案 0 :(得分:5)
是否可以仅覆盖部分方法?
不,这是不可能的。您需要将需要重写的函数部分提取到新的virtual
方法中。
例如,如果仅从此方法调用AdjustWorldObject
和ResetWorldObject
,则可以将其设置为虚拟并在需要时覆盖,如此
class Party
{
protected void OnMemberDeath( )
{
if(aliveCount > 1)
{
AdjustWorldObject();
aliveCount--;
}
else
{
ResetWorldObject();
if(OnPartyDeath != null) OnPartyDeath(); // Event
else print( "Party died but event had no subscriptions!" );
}
}
protected virtual void AdjustWorldObject()
{
// ...
}
protected virtual void ResetWorldObject()
{
// ...
}
}
class PlayerParty : Party
{
protected override void AdjustWorldObject()
{
base.AdjustWorldObject();
AdjustCombatUI();
}
protected override void ResetWorldObject()
{
base.ResetWorldObject();
ResetCombatUI();
}
}
如果不是,您可以创建类似的专用虚拟方法。