4

私の問題は、プレイ可能なキャラクターの属性を継承することにあります。Beingという名前の抽象クラスがあり、継承するすべてのクラスに、Strength、Dexterityなどの属性が含まれている必要があります。プレイヤーは種族を選択する必要があります。たとえば、Strengthを0から10に上げるOrcを選択する必要があります。ヒーローの強さにさらに7ポイントを追加するブルートなどのクラス。私が見る限り、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

多重継承のソリューションとしてCompositionを使用できます。

ここでのこの答えはそれを最もよく説明しています:https ://stackoverflow.com/a/178368/340128

于 2013-02-05T15:22:21.760 に答える
3

抽象クラスに抽象プロパティしかない場合は、代わりにインターフェースにすることができます。これにより、実装クラスは実装を提供するように強制され、必要な数のインターフェイスを実装できます。

それ以外の場合は、デコレータパターンまたはストラテジーパターンを確認します。どちらも、継承の代わりに構成を使用します。

于 2013-02-05T15:24:04.677 に答える
3

コンポーネントパターンはあなたが探しているものかもしれません。

存在に種族コンポーネントとクラスコンポーネント(つまりフィールド)を含めることができ、強さフィールドゲッターに種族の強さボーナスとクラスの強さボーナスの合計を返すようにすることができます。

于 2013-02-05T15:25:11.283 に答える