あなたが一人称シューティングゲームを作っていると考えてください。プレイヤーは選択可能な複数の銃を持っています。
Gun
関数を定義するインターフェースを持つことができますshoot()
。
Gun
つまりShotGun
Sniper
、クラスのさまざまなサブクラスが必要です。
ShotGun implements Gun{
public void shoot(){
\\shotgun implementation of shoot.
}
}
Sniper implements Gun{
public void shoot(){
\\sniper implementation of shoot.
}
}
シュータークラス
射手は彼の鎧にすべての銃を持っています。List
それを表すを作成してみましょう。
List<Gun> listOfGuns = new ArrayList<Gun>();
射手は必要に応じて、関数を使用して彼の銃を循環します switchGun()
public void switchGun(){
//code to cycle through the guns from the list of guns.
currentGun = //the next gun in the list.
}
上記の関数を使用して現在のGunを設定し、が呼び出されたshoot()
ときに関数を呼び出すだけ fire()
です。
public void fire(){
currentGun.shoot();
}
シュート機能の動作は、Gun
インターフェースの実装によって異なります。
結論
実装されたクラスのインスタンス(オブジェクト)に基づいて、クラス関数が別のクラスの関数に依存し、その動作が変更される場合に、インターフェイスを作成します。
たとえばfire()
、Shooter
クラスの関数は、guns(Sniper
、ShotGun
)がshoot()
関数を実装することを期待しています。だから私たちが銃を切り替えて発砲した場合。
shooter.switchGun();
shooter.fire();
fire()
関数の動作を変更しました。