4

我的问题在于继承可玩角色的属性。我有一个名为 Being 的抽象类,它声明所有继承类都需要包含诸如力量、敏捷等属性。玩家需要选择一个种族,例如将力量从 0 提高到 10 的兽人。然后玩家需要选择一个类,例如蛮力,可为英雄的力量增加 7 点。据我所知,我会被我的 Hero 类继承 2 个抽象类所困扰吗?这是我的 Orc 课程的摘录:

public abstract class Orc:Being
{
     private int _strength = 10;



     //Another question, is it okay to declare an abstract property in my base abstract
     //class to force the inheriting class Orc to override the property? I wanted to 
     //find a way to force subclasses to have strength attributes

     public override int Strength
     {
            get {return _strength;}
            set {_strength = value;}
     }
}
4

3 回答 3

5

您可以使用组合作为多重继承的解决方案:

这个答案在这里解释得最好:https ://stackoverflow.com/a/178368/340128

于 2013-02-05T15:22:21.760 回答
3

如果你的抽象类只有抽象属性,你可以把它变成一个接口。这迫使实现类提供实现,并且您可以实现任意数量的接口。

否则,我会看一下装饰器模式策略模式。两者都使用组合作为继承的替代方法。

于 2013-02-05T15:24:04.677 回答
3

组件模式可能是您正在寻找的。

你可以让众生包含一个种族成分和一个职业成分(即场),并使力量场getter返回种族力量加值+职业力量加值的总和。

于 2013-02-05T15:25:11.283 回答