同じオブジェクトを参照する複数のインスタンス変数なしで継承を実装するにはどうすればよいですか?

ケイシー

オブジェクトを参照するインスタンス変数を1つだけ持つ必要があるように感じます。しかし、以下のコードでは、同じオブジェクトを参照する2つのインスタンス変数「_character」と「_witch」があります。より特殊な魔女クラスを追加する場合は、3番目のインスタンス変数を追加する必要があります。
これは通常、この状況で人々が行うことですか?または、1つの参照のみを使用してこれを実現する方法はありますか?また、私は本当に何もキャストする必要はありません(それがこのシナリオのベストプラクティスでない限り)。

AnimationControllerを拡張するWitchAnimationControllerに加えて、WitchStateはCharacterStateを拡張します。

基本クラス:

public class AnimationController 
{
    protected CharacterState _character;

    public AnimationController( CharacterState character )
    {
        _character = character;
    }

    public void UpdateAnimations() 
    {
        /* call on some CharacterState functions... */
    }
}

子クラス:

public class WitchAnimationController : AnimationController
{
    protected WitchState _witch; //inherits from CharacterState

    public AnimationController( WitchState witch ) : base( witch ) 
    {
        _witch = witch;
    }

    public void UpdateAnimations() 
    {
        base.UpdateAnimations();

        /* call on some WitchState functions... */
    }
}
ジョンスキート

魔女特有の呼び出しが必要ない場合は、_witchフィールドを捨ててフィールドを使用できますが、_character個人的には保護されたプロパティを持つプライベートフィールドにします。

キャラクター固有のメンバーが必要な場合は、アニメーションコントローラーを汎用にすることを検討する必要があります。

public class AnimationController<T> where T : CharacterState
{
    protected T _character;

    public AnimationController(T character)
    {
        _character = character;
    }

    public void UpdateAnimations() 
    {
        /* call on some CharacterState functions... */
    }
}

次に:

public class WitchAnimationController : AnimationController<WitchState>
{    
    public WitchAnimationController(WitchState witch) : base(witch) 
    {}

    public void UpdateAnimations() 
    {
        base.UpdateAnimations();

        _character.SomeMethodOnWitchState();
    }
}

_character.SomeMethodOnWitchState()コールは、内部に有効になりますWitchAnimationControllerので、_character効果的にタイプのですWitchState

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

この例では、同じインターフェイスから継承するさまざまなオブジェクトをジェネリック型で1つの変数に格納するにはどうすればよいですか?

分類Dev

Android Roomで同じオブジェクトの複数のインスタンスを結合するにはどうすればよいですか?

分類Dev

GWT(またはJava AWT Swing)で同じ種類の複数のオブジェクトに対して同じ機能を実行する同じイベントハンドラーを使用するにはどうすればよいですか?

分類Dev

Pythonでオブジェクトのリストをインスタンス属性として実装するにはどうすればよいですか?

分類Dev

クラスにインターフェイスを実装し、別のクラスから継承させるにはどうすればよいですか?

分類Dev

同じインスタンスで複数のストームトポロジを実行するにはどうすればよいですか?

分類Dev

オブジェクトのインスタンスに使用する変数のタイプを知るにはどうすればよいですか?

分類Dev

同じOOPクラスの複数のオブジェクトを変更するにはどうすればよいですか?

分類Dev

Perlで複数のオブジェクトを作成し、同じメソッドにアクセスするにはどうすればよいですか?

分類Dev

TypeScriptインターフェイスで複数のオブジェクトを含む配列を指定するにはどうすればよいですか?

分類Dev

1つの配列に同じオブジェクトへの複数の可変参照を含めるにはどうすればよいですか?

分類Dev

Javaの複数の実装クラスでダブルインターフェイスを使用するにはどうすればよいですか?

分類Dev

Pythonで同じクラスのオブジェクトを構築する複数の方法を用意するにはどうすればよいですか?

分類Dev

異なるジェネリックで同じインターフェースを実装することを禁止する新しいDartの変更を回避するにはどうすればよいですか?

分類Dev

複数のManytoManyインスタンスをDjangoオブジェクトに保存するにはどうすればよいですか?

分類Dev

変数の1つからオブジェクトのインスタンスを取得するにはどうすればよいですか?

分類Dev

同じマシンで複数のグラフエンジンインスタンスを実行するにはどうすればよいですか?

分類Dev

均一なバッファオブジェクトとインスタンス化されたレンダリングを使用して複数のオブジェクトを描画するにはどうすればよいですか?

分類Dev

ggplotラインプロットで複数のサブクラスを同じような色で着色するにはどうすればよいですか?

分類Dev

インスタンス変数内の各オブジェクトのform_forを作成するにはどうすればよいですか?Rails 4

分類Dev

複数のインスタンス.javaファイルを実行するにはどうすればよいですか(そのうちの1つをオブジェクトまたはメソッドとして実行します)

分類Dev

Pythonを使用してランタイムオブジェクト(異なる)実装を実装するにはどうすればよいですか?

分類Dev

同じクラスの複数のインスタンスを非同期で実行するにはどうすればよいですか?

分類Dev

デザインパターンを使用して、同じ属性を持つ別のオブジェクトにオブジェクトをキャストするにはどうすればよいですか?ライブラリなし

分類Dev

同じホストでSwaggerizeの複数のインスタンスを実行するにはどうすればよいですか?

分類Dev

同様の関数にmapplyを使用した結果、同じオブジェクトタイプを取得するにはどうすればよいですか?

分類Dev

GSONを使用して同じJSONファイルから複数のJavaオブジェクトを取得するにはどうすればよいですか?

分類Dev

List <インターフェイスを実装するオブジェクト>をメソッドに渡すにはどうすればよいですか?

分類Dev

複数の同じ機能クラス(コントローラー)を、データオブジェクトをパラメーターとして受け取る1つに組み合わせるにはどうすればよいですか?

Related 関連記事

  1. 1

    この例では、同じインターフェイスから継承するさまざまなオブジェクトをジェネリック型で1つの変数に格納するにはどうすればよいですか?

  2. 2

    Android Roomで同じオブジェクトの複数のインスタンスを結合するにはどうすればよいですか?

  3. 3

    GWT(またはJava AWT Swing)で同じ種類の複数のオブジェクトに対して同じ機能を実行する同じイベントハンドラーを使用するにはどうすればよいですか?

  4. 4

    Pythonでオブジェクトのリストをインスタンス属性として実装するにはどうすればよいですか?

  5. 5

    クラスにインターフェイスを実装し、別のクラスから継承させるにはどうすればよいですか?

  6. 6

    同じインスタンスで複数のストームトポロジを実行するにはどうすればよいですか?

  7. 7

    オブジェクトのインスタンスに使用する変数のタイプを知るにはどうすればよいですか?

  8. 8

    同じOOPクラスの複数のオブジェクトを変更するにはどうすればよいですか?

  9. 9

    Perlで複数のオブジェクトを作成し、同じメソッドにアクセスするにはどうすればよいですか?

  10. 10

    TypeScriptインターフェイスで複数のオブジェクトを含む配列を指定するにはどうすればよいですか?

  11. 11

    1つの配列に同じオブジェクトへの複数の可変参照を含めるにはどうすればよいですか?

  12. 12

    Javaの複数の実装クラスでダブルインターフェイスを使用するにはどうすればよいですか?

  13. 13

    Pythonで同じクラスのオブジェクトを構築する複数の方法を用意するにはどうすればよいですか?

  14. 14

    異なるジェネリックで同じインターフェースを実装することを禁止する新しいDartの変更を回避するにはどうすればよいですか?

  15. 15

    複数のManytoManyインスタンスをDjangoオブジェクトに保存するにはどうすればよいですか?

  16. 16

    変数の1つからオブジェクトのインスタンスを取得するにはどうすればよいですか?

  17. 17

    同じマシンで複数のグラフエンジンインスタンスを実行するにはどうすればよいですか?

  18. 18

    均一なバッファオブジェクトとインスタンス化されたレンダリングを使用して複数のオブジェクトを描画するにはどうすればよいですか?

  19. 19

    ggplotラインプロットで複数のサブクラスを同じような色で着色するにはどうすればよいですか?

  20. 20

    インスタンス変数内の各オブジェクトのform_forを作成するにはどうすればよいですか?Rails 4

  21. 21

    複数のインスタンス.javaファイルを実行するにはどうすればよいですか(そのうちの1つをオブジェクトまたはメソッドとして実行します)

  22. 22

    Pythonを使用してランタイムオブジェクト(異なる)実装を実装するにはどうすればよいですか?

  23. 23

    同じクラスの複数のインスタンスを非同期で実行するにはどうすればよいですか?

  24. 24

    デザインパターンを使用して、同じ属性を持つ別のオブジェクトにオブジェクトをキャストするにはどうすればよいですか?ライブラリなし

  25. 25

    同じホストでSwaggerizeの複数のインスタンスを実行するにはどうすればよいですか?

  26. 26

    同様の関数にmapplyを使用した結果、同じオブジェクトタイプを取得するにはどうすればよいですか?

  27. 27

    GSONを使用して同じJSONファイルから複数のJavaオブジェクトを取得するにはどうすればよいですか?

  28. 28

    List <インターフェイスを実装するオブジェクト>をメソッドに渡すにはどうすればよいですか?

  29. 29

    複数の同じ機能クラス(コントローラー)を、データオブジェクトをパラメーターとして受け取る1つに組み合わせるにはどうすればよいですか?

ホットタグ

アーカイブ