質問: JAVAで質問です。 現在、進撃の巨人を参考にバトルのプログラミングを書いています。
回答: ※ 私はあまり進撃の巨人は見ていません。(シーズン1ぐらい?) >> (ユミルの民だけが巨人になれる/巨人の種類は進撃、鎧、獣、超巨大等いくつか種類があります) ロジックによって違うと思いますが、 もしかして、Titanって、「進撃なら~、鎧なら~」とかみたいにやっていませんか? もし、そうなら、私なら、 Titan は abstract にして、 abstruct Titan extends Yumiru{} で、基本的な感じにします。 あるいは、ガンダムとかみたいに、「乗り込むタイプ」だと仮定するなら、 abstract な Titanを用意して、これに Yumiruのオブジェクトを渡してフィールドとして保持させる。 あれって、どっちなんでしょうねぇ... 乗り込むタイプとも見えるし、自身だとも見えるし... そして、ここからが問題。 Titanは進撃、鎧とかみたいな種類があるんですよね? それなら、「Titanを継承する」です。 獣系だと、BeastTitan として、 public BeastTitan extends Titan{...} みたいに継承する。 もしTitanをインターフェースとしているなら実装ですが。 そうすると、 Titan titan1 = new BeastTitan( yumiru1 ); Titan titan2 = new ArmorTitan( yumiru2 ); if( titan1.attack( titan2 ) )... のように省略できるはずです。 つまり、継承って、「子でnewして、親で保持する」ことで、 「オブジェクトに処理を任せる」、つまり「オブジェクトだけがデータと処理を知っている」っていう状態にする事ですから。 ただし、内部のロジックがどうなっているかとかにもよると思いますよ。