package com.java1.day18;
public class RepairableTest7 {
public static void main(String[] args) {
Tank1 tank = new Tank1();
Dropship1 dropship = new Dropship1();
Marine1 marine = new Marine1();
SCV1 scv = new SCV1();
scv.reapir(tank);
scv.reapir(dropship);
scv.reapir(scv);
}
}
interface Repairable1 {}
class Unit1 {
int hitPoint;
final int MAX_HP;
Unit1(int hp){
MAX_HP = hp;
}
}
class GroundUnit1 extends Unit1 {
GroundUnit1(int hp) {
super(hp);
}
}
class AirUnit1 extends Unit1 {
AirUnit1(int hp) {
super(hp);
}
}
class Tank1 extends GroundUnit1 implements Repairable1 {
Tank1() {
super(150);
hitPoint = MAX_HP;
}
@Override
public String toString() {
return "Tank";
}
}
class Dropship1 extends AirUnit1 implements Repairable1 {
Dropship1() {
super(125);
hitPoint = MAX_HP;
}
@Override
public String toString() {
return "Dropship";
}
}
class Marine1 extends GroundUnit1 {
Marine1() {
super(40);
hitPoint = MAX_HP;
}
}
class SCV1 extends GroundUnit1 implements Repairable1 {
SCV1() {
super(60);
hitPoint = MAX_HP;
}
void reapir(Repairable1 r) {
if( r instanceof Unit1) {
Unit1 u = (Unit1) r;
while(u.hitPoint != u.MAX_HP) {
u.hitPoint++;
}
System.out.println(u.toString() + "의 수리가 끝났습니다.");
}
}
@Override
public String toString() {
return "SCV";
}
}
출력결과
Tank의 수리가 끝났습니다.
Dropship의 수리가 끝났습니다.
SCV의 수리가 끝났습니다.