コンテンツにスキップ

第11章

コード11-01

Character.java

public class Character {
  String name;
  int hp;
  // 逃げる
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  // 戦う
  public void attack(Matango m) {
    System.out.println(this.name + "の攻撃!");
    m.hp -= ??;
    System.out.println("敵に??ポイントのダメージをあたえた!");
  }
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

コード11-02

Character.java

public class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public void attack(Matango m) {
  }
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

コード11-03

Character.java

public class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public void attack(Matango m) {
  }
}

Hero.java

public class Hero extends Character {
  public void attack(Matango m) {
    System.out.println(this.name + "の攻撃!");
    System.out.println("敵に10ポイントのダメージをあたえた!");
    m.hp -= 10;
  }
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

コード11-04

Character.java

public class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public void attack(Matango m) {
  }
}

Hero.java

public class Hero extends Character {
}

Main.java

public class Main {
  public static void main(String[] args) {
    Hero h = new Hero();
    Matango m = new Matango();
    h.attack(m);
  }
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

コード11-05

Character.java

public class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public void attack(Matango m) {
  }
}

Hero.java

public class Hero extends Character {
  public void atack(Matango m) {
    System.out.println(this.name + "の攻撃!");
    System.out.println("敵に10ポイントのダメージをあたえた!");
    m.hp -= 10;
  }
}

Main.java

public class Main {
  public static void main(String[] args) {
    Hero h = new Hero();
    Matango m = new Matango();
    h.attack(m);
  }
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

コード11-06

Character.java

public class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public void attack(Matango m) {
  }
}

Main.java

public class Main {
  public static void main(String[] args) {
    Character c = new Character();
    Matango m = new Matango();
    c.attack(m);
  }
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

コード11-07

Character.java

public class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public abstract void attack(Matango m);
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

コード11-08

Character.java

public abstract class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public abstract void attack(Matango m);
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

コード11-09

Character.java

public abstract class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public abstract void attack(Matango m);
}

Dancer.java

public class Dancer extends Character {

  public void dance() {
    System.out.println(this.name + "は情熱的に踊った");
  }
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

コード11-10

Character.java

public abstract class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public abstract void attack(Matango m);
}

Dancer.java

public class Dancer extends Character {
  public void dance() {
    System.out.println(this.name + "は情熱的に踊った");
  }
  public void attack(Matango m) {
    System.out.println(this.name + "の攻撃");
    System.out.println("敵に3ポイントのダメージ");
    m.hp -= 3;
  }
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

コード11-11

Creature.java

public abstract class Creature {
  public abstract void run();
}

コード11-12

Creature.java

public interface Creature {
  public abstract void run();
}

コード11-13

Creature.java

public interface Creature {
  void run();
}

コード11-14

CleaningService.java

public interface CleaningService {
  Shirt washShirt(Shirt s);
  Towl washTowl(Towl t);
  Coat washCoat(Coat c);
}

Coat.java

public class Coat {}

Shirt.java

public class Shirt {}

Towl.java

public class Towl {}

コード11-15

CleaningService.java

public interface CleaningService {
  Shirt washShirt(Shirt s);
  Towl washTowl(Towl t);
  Coat washCoat(Coat c);
}

Coat.java

public class Coat {}

KyotoCleaningShop.java

public class KyotoCleaningShop implements CleaningService {
  String ownerName;    // 店主の名前
  String address;      // 住所
  String phone;        // 電話番号
  /* シャツを洗う */
  public Shirt washShirt(Shirt s) {
    // 大型洗濯機15分
    return s;
  }
  /* タオルを洗う */
  public Towl washTowl(Towl t) {
    // 大型洗濯機10分
    return t;
  }
  /* コートを洗う */
  public Coat washCoat(Coat c) {
    // ドライ20分
    return c;
  }
}

Shirt.java

public class Shirt {}

Towl.java

public class Towl {}

コード11-16

Creature.java

public interface Creature {
  void run();
}

Human.java

public interface Human extends Creature {
  void talk();
  void watch();
  void hear();
  // さらに、親インタフェースからrun()を継承する
}

コード11-17

Character.java

public abstract class Character {
  String name;
  int hp;
  public abstract void run();
  public abstract void attack(Matango m);
}

Creature.java

public interface Creature {
  void run();
}

Fool.java

public class Fool extends Character implements Human {
  // Characterからhpやnameなどのフィールドを継承している
  // Characterから継承した抽象メソッドattack()を実装
  public void attack(Matango m) {
    System.out.println(this.name + "は戦わずに遊んでいる");
  }
  // さらにHumanから継承した4つの抽象メソッドを実装
  public void talk() { /* … */ }
  public void watch() { /* … */ }
  public void hear() { /* … */ }
  public void run() { /* … */ }
}

Human.java

public interface Human extends Creature {
  void talk();
  void watch();
  void hear();
  // さらに、親インタフェースからrun()を継承する
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}