BLOG

【プログラマー 研修 Java】キャイダの記録5

キャイダです。
夏なのでこの間の休日に友達とホラゲーをしました。
夏と言えば涼むためにホラゲーしますよね。今年まだ全然暑くないけども。

男5人も集まってプレイしたんですが、プレイしたのは僕だけでした。
そのほかは全員プレイしない、いわゆる見る専というやつです。
その中に最強のビビりでホラゲー嫌いな奴がいたんですが、お化け出るたびに奇声をあげて驚いていて、
終いには腕から微量の出血してました。彼は以前もホラゲーで足の骨にひびを入れてしまった猛者なので
少しホラゲーは自重したほうがいいのかもしれないと思ったキャイダです。
でもたのしかったです。

そんなこんなで2週目ではひとまずjavaとSQLを終えました。
復習はまだjavaについて書きますが、それはそれで復習になるので、このペースで続けていきます。

インターフェース

インターフェースやらインタフェースやらいいます。どっちでもいいです。
最初は画面設計の話かな?と思いましたが違いました。
前回の抽象クラスと似たやつです。しかしインターフェースは何個でも継承できてしまうので抽象クラスからしたら
「もう、全部あいつ一人でいいんじゃないかな」といった感じです。
それぐらい便利な奴なんです。

abstract class Human{
	int hp;
	int attack;
}

interface Battle{
	void attack();
	void cry();
}

上のほうは抽象クラスのヒューマン。
下のほうがバトルインターフェースです。

これを実装すると以下のようになります。

//強田クラス
class Tsuyoda extends Human implements Battle{
	public void attack(){
		System.out.println("無慈悲に振り下ろされる強田の鉄槌!");
	}
	public void cry(){
		System.out.println("強田は悔しく、涙を流した");
	}
}

//弱田クラス
class Yowada extends Human implements Battle{
	public void attack(){
		System.out.println("弱田のまるで、赤子のような貧弱パンチ!!");
	}
	public void cry(){
		System.out.println("彼は泣いた。自分の弱さに対して…。");
	}
}

それぞれHumanを引き継ぎ、さらにinterfaceであるBattleを継承しています。
そう、二つも継承しているのです。しかもinterfaceはいくらでも追加できるので、この後に
戦い以外の機能を追加しようとしても容易にできてしまうのです。すごい。
それに加え、interfaceを継承する上で、メソッドは絶対に実装しないと怒られるので実装し忘れを防げるのです。

インターフェースを作るときは、interface
インターフェースを継承するときはimplementsを使用します。

今回は実際に強田と弱田を戦わせるプログラムを作りたいと思います。

まずは攻撃力とHPを作ったので、せっかくならステータスを入力できるようにしましょう。

class Human{
	int hp;
	int attack;
	Human(int hp , int attack){
		this.hp = hp;
		this.attack = attack;
	}
}

Humanに改めてコンストラクタを作り、インスタンス化する際ステータスを入れるようにしました。
ますはこれでステータス入りのインスタンスを作りましょう。

Tsuyoda tsuyoda = new Tsuyoda(100,60);
Yowada yowada = new Yowada(30,2);

強田 HP:100 攻撃力:60
弱田 HP:30   攻撃力:2
なんということでしょう、二人のステータスにはかなりの差があります。
強田の攻撃で弱田は2回分負けてしまいます。オーバーキルです。
お次は二人の継承したインターフェースのメソッドを書き換えてお互いの
HPを削れるようにしていきましょう。

お互いのHPを削るためには次回で振り返ろうと思っていた多態性が必要になってしまいます。
ナンテコッタイ、これじゃ続きが書けないなぁ、というところで今日は一旦終わりにして、
次回プログラムの続きを作るとします。

⇐ To Be Continued

BLOGトップへ戻る