プログラミング応用a 第14回 『抽象クラス・抽象メソッド2』 14-7. 継承のまとめ


【14-2. 継承のまとめ】

継承サマリー(PDF書類)


 クラスの設計に慣れてきたら,スーパークラスは以下の様に最初から抽象クラスとして定義し,具体的な処理が決められないメソッドは抽象メソッドとすると良いだろう。

■例1 RPGゲームの場合 RPGCharacter.java

abstract class RPGCharacter {
  private int hp, mp, money;
  private String name;
  RPGCharacter( int hp, int mp, int money, String name ){
    this.hp = hp; this.mp = mp;
    this.money = money; this.name = name; 
  }
  abstract void move( double sec ); // sec秒間移動
  abstract void fight( RPGCharacter c ); // cへ攻撃
  abstract void defence( double damage ); // 受けたダメージ damageを軽減してhpから引く
}

■例2 製図ソフトの例 Fig2d.java
abstract class Fig2D {
  private double x, y;
  Fig2D( double x, double y ) { this.x = x; this.y = y; }
  abstract void draw( ); // 自分自身を描写する
  abstract void move( double dx, double dy ); // dx,dyだけ移動
  abstract void rotate( double a ); // a度だけ時計回りに回転
}


また,パッケージ化を考えた場合は

 ・それぞれのクラス(スーパークラスおよびサブクラス)を他のパッケージからの使用を許可したいなら,publicクラスとして定義し,コンストラクタやメソッドを publicメソッドとして定義する。

と良いだろう。