1.ch04에 StarGame 만들고, 오버라이드로 해결하기
Protoss 만들어서 추상적인 것에 의존하기 (attack 함수 결국 한개에요)
package ex05.ch04;
class Protoss {
public int getHp() {
return 0;
}
public int getPower() {
return 0;
}
public void setHp(int hp) {
}
public void setPower(int power) {
}
public void attack(Protoss unit) {
unit.setHp(unit.getHp() - this.getPower());
}
}
class Zealot extends Protoss {
int hp = 100;
int power = 20;
public int getHp() {
return hp;
}
public void setHp(int hp) {
this.hp = hp;
}
public int getPower() {
return power;
}
public void setPower(int power) {
this.power = power;
}
}
class Dragon extends Protoss {
int hp = 100;
int power = 10;
public int getHp() {
return hp;
}
public void setHp(int hp) {
this.hp = hp;
}
public int getPower() {
return power;
}
public void setPower(int power) {
this.power = power;
}
}
class DarkTemplar extends Protoss {
int hp = 100;
int power = 70;
public int getHp() {
return hp;
}
public void setHp(int hp) {
this.hp = hp;
}
public int getPower() {
return power;
}
public void setPower(int power) {
this.power = power;
}
}
class River extends Protoss {
int hp = 100;
int power = 50;
public int getHp() {
return hp;
}
public void setHp(int hp) {
this.hp = hp;
}
public int getPower() {
return power;
}
public void setPower(int power) {
this.power = power;
}
}
class Archon extends Protoss {
int hp = 100;
int power = 70;
public int getHp() {
return hp;
}
public void setHp(int hp) {
this.hp = hp;
}
public int getPower() {
return power;
}
public void setPower(int power) {
this.power = power;
}
}
public class StarGame {
public static void main(String[] args) {
Protoss p1 = new Zealot();
Protoss p2 = new Zealot();
Protoss p3 = new Dragon();
Protoss p4 = new Dragon();
Protoss p5 = new DarkTemplar();
Protoss p6 = new DarkTemplar();
Protoss p7 = new River();
Protoss p8 = new River();
Protoss p9 = new Archon();
Protoss p10 = new Archon();
p1.attack(p3);
p1.attack(p5);
p7.attack(p10);
p9.attack(p7);
p4.attack(p6);
p7.attack(p8);
System.out.println("드라군의 hp : " + p3.getHp());
System.out.println("다크템플러의 hp : " + p5.getHp());
System.out.println("아콘의 hp : " + p10.getHp());
System.out.println("리버의 hp : " + p7.getHp());
System.out.println("다크템플러의 hp : " + p6.getHp());
System.out.println("리버의 hp : " + p8.getHp());
}
}
Share article