抽象クラスから派生したオブジェクトをメソッドのパラメーターとして受け取る

メニュー

私はJavaを初めて使用し、現在抽象クラスについて学習しています。現在、私は簡単なRPGを作成しています。と呼ばれる抽象クラスがありPerson、これは他の2つのクラスとに拡張されているWarriorとしWizardます。

ここでWeaponattack()またはなどの他の継承されたクラスによって上書きできるいくつかの基本的なメソッドを共有するさまざまなタイプの武器(剣、斧、弓など)を作成できる、という別の抽象クラスがあるとしますmaintenance()

PersonWizardまたはWarrior)がattack()ゲームのある時点でメソッドを呼び出すとき、誰が攻撃者で誰が防御者であるかを知る必要があります(ライフバーのステータス、武器の耐久性などを変更できることを示してください)。

(これは本質的に、attack()メソッド内の2つのオブジェクトをパラメーターとして受け取ることを意味します)。

だからここで私は立ち往生しています。攻撃者と防御者の組み合わせは、、である可能性がWizard-WarriorありWizard-Wizard, Warrior-Wizard or Warrior-Warriorます。

オブジェクトがウィザードか戦士かを気にせずに、オブジェクトをパラメーターとして受け取ることができるようattack()に、Weaponクラスにメソッドを実装するにはどうすればよいですか?これは可能でしょうか?

たとえば、このようなことをしていますか?

void attack(Person attacker, Person defender)
{
    // add method logic here

}  

前もって感謝します。

user3458

最初のステップは、派生WizardしてWarriorからですPerson(Personをインターフェースにすることを検討してください)。

2番目のステップは、attack(Person attacker, Person defender)WariorやWizardではなく、Personの観点から実装します。ウォリアーとウィザードに共通するすべての方法は、人が利用できるようにする必要があります。一般的でない方法は、とは無関係にする必要がありますattack()

たとえば、WizardにcastBestSpell(Person target)メソッドがある場合、WarriorにメソッドがhitWithWeapon(Person target)ありますが、両方のメソッドをに減らす必要ありますPerson.attack(Person target)ウィザードと戦士はattack(Person target)異なる方法で実装します。1つはを呼び出すことによるものcastBestSpell、もう1つはを呼び出すことによるものhitWithWeaponです。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

派生演算子<パラメータとしてベースオブジェクトを受け取る

分類Dev

オブジェクト型をパラメーターとして受け取るコンストラクターを使用した静的メソッドでの非静的クラス(コンテキスト)のインスタンス化

分類Dev

オブジェクトをパラメータとして受け取るJavaでのメソッドの実装

分類Dev

オブジェクトクラスメソッドがクラスのインスタンスをパラメータとして受け取るのはなぜですか

分類Dev

任意のオブジェクトをパラメータとして受け取る関数

分類Dev

angle / typescript httpGETメソッドがJSONオブジェクトをパラメーターとして受け入れないのはなぜですか

分類Dev

onPauseメソッドのパラメーターとしてonCreateからオブジェクトを取得するメソッドの使用方法

分類Dev

別のクラスjavaからオブジェクトとしてパラメータを使用してメソッドを呼び出す方法は?

分類Dev

オブジェクトをパラメータとして受け取るDLL関数を使用するJNIJava

分類Dev

任意のオブジェクトの配列をパラメータとして受け取るジェネリック関数

分類Dev

クラスオブジェクトをタイプリテラルとしてではなく、オブジェクトのみをパラメータとして受け入れるようにメソッドを制限するにはどうすればよいですか?

分類Dev

クラスオブジェクトをタイプリテラルとしてではなく、オブジェクトのみをパラメータとして受け入れるようにメソッドを制限するにはどうすればよいですか?

分類Dev

Android kotlinメソッドは、任意のオブジェクトタイプをパラメーターとして受け入れます

分類Dev

オブジェクトの作成を削除するためのメソッドへのパラメーターの受け渡し

分類Dev

Angularのgetメソッドのパラメーターとしてオブジェクトを使用する

分類Dev

剣道データソースの読み取りメソッドで配列オブジェクトをパラメーターとして渡す方法は?

分類Dev

Javaインターフェースをパラメーターとして使用した抽象クラスメソッドのオーバーライド

分類Dev

複数のオブジェクトをパラメーターとして受け取るphp関数の簡単なテスト

分類Dev

ByteBuddyで生成されたメソッドから、引数として受け取ったオブジェクトの(パブリック)インスタンスフィールドをMethodCallの戻り値に設定するにはどうすればよいですか?

分類Dev

オブジェクトとそのスーパークラスのいずれかを取るメソッド

分類Dev

Swift-ビューコントローラーへの入力パラメーターとしてjsonオブジェクトを受け取りますか?

分類Dev

JS関数は、オブジェクトを入力として受け取り、パラメーターとして渡されたオブジェクトに対してアクションを実行するオブジェクトを返します。

分類Dev

カスタムオブジェクトを含むベクター:.atメソッドで受け取ったものを使用したいときにクラッシュする

分類Dev

オブジェクトクラスメソッドのオーバーライドにおけるインターフェースと抽象クラス

分類Dev

具象子クラスのオーバーライドされたメソッドから、抽象クラスのコンストラクターを介してインスタンス化されたオブジェクトの属性にアクセスするにはどうすればよいですか?

分類Dev

クラスメソッドへのオブジェクトの受け渡し:オブジェクトはこのプロパティまたはメソッドをサポートしていません

分類Dev

パラメータとしてジェネリッククラスを受け取る

分類Dev

オプション/デフォルトのプロパティを持つオブジェクトをパラメータとして受け取る関数?

分類Dev

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

Related 関連記事

  1. 1

    派生演算子<パラメータとしてベースオブジェクトを受け取る

  2. 2

    オブジェクト型をパラメーターとして受け取るコンストラクターを使用した静的メソッドでの非静的クラス(コンテキスト)のインスタンス化

  3. 3

    オブジェクトをパラメータとして受け取るJavaでのメソッドの実装

  4. 4

    オブジェクトクラスメソッドがクラスのインスタンスをパラメータとして受け取るのはなぜですか

  5. 5

    任意のオブジェクトをパラメータとして受け取る関数

  6. 6

    angle / typescript httpGETメソッドがJSONオブジェクトをパラメーターとして受け入れないのはなぜですか

  7. 7

    onPauseメソッドのパラメーターとしてonCreateからオブジェクトを取得するメソッドの使用方法

  8. 8

    別のクラスjavaからオブジェクトとしてパラメータを使用してメソッドを呼び出す方法は?

  9. 9

    オブジェクトをパラメータとして受け取るDLL関数を使用するJNIJava

  10. 10

    任意のオブジェクトの配列をパラメータとして受け取るジェネリック関数

  11. 11

    クラスオブジェクトをタイプリテラルとしてではなく、オブジェクトのみをパラメータとして受け入れるようにメソッドを制限するにはどうすればよいですか?

  12. 12

    クラスオブジェクトをタイプリテラルとしてではなく、オブジェクトのみをパラメータとして受け入れるようにメソッドを制限するにはどうすればよいですか?

  13. 13

    Android kotlinメソッドは、任意のオブジェクトタイプをパラメーターとして受け入れます

  14. 14

    オブジェクトの作成を削除するためのメソッドへのパラメーターの受け渡し

  15. 15

    Angularのgetメソッドのパラメーターとしてオブジェクトを使用する

  16. 16

    剣道データソースの読み取りメソッドで配列オブジェクトをパラメーターとして渡す方法は?

  17. 17

    Javaインターフェースをパラメーターとして使用した抽象クラスメソッドのオーバーライド

  18. 18

    複数のオブジェクトをパラメーターとして受け取るphp関数の簡単なテスト

  19. 19

    ByteBuddyで生成されたメソッドから、引数として受け取ったオブジェクトの(パブリック)インスタンスフィールドをMethodCallの戻り値に設定するにはどうすればよいですか?

  20. 20

    オブジェクトとそのスーパークラスのいずれかを取るメソッド

  21. 21

    Swift-ビューコントローラーへの入力パラメーターとしてjsonオブジェクトを受け取りますか?

  22. 22

    JS関数は、オブジェクトを入力として受け取り、パラメーターとして渡されたオブジェクトに対してアクションを実行するオブジェクトを返します。

  23. 23

    カスタムオブジェクトを含むベクター:.atメソッドで受け取ったものを使用したいときにクラッシュする

  24. 24

    オブジェクトクラスメソッドのオーバーライドにおけるインターフェースと抽象クラス

  25. 25

    具象子クラスのオーバーライドされたメソッドから、抽象クラスのコンストラクターを介してインスタンス化されたオブジェクトの属性にアクセスするにはどうすればよいですか?

  26. 26

    クラスメソッドへのオブジェクトの受け渡し:オブジェクトはこのプロパティまたはメソッドをサポートしていません

  27. 27

    パラメータとしてジェネリッククラスを受け取る

  28. 28

    オプション/デフォルトのプロパティを持つオブジェクトをパラメータとして受け取る関数?

  29. 29

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

ホットタグ

アーカイブ