day18_Repairable

육희영·2021년 10월 28일
0
package com.java1.day18;
interface Repairable {}

class Unit7 {
	int hitPoint;
	final int MAX_HP;
	Unit7(int hp){
		MAX_HP = hp;
	}
}

class GroundUnit extends Unit7 {
	GroundUnit(int hp) {
		super(hp);
	}
}

class AirUnit extends Unit7 {
	AirUnit(int hp) {
		super(hp);
	}
}

class Tank extends GroundUnit implements Repairable {
	Tank() {
		super(150);		//Tank의 HP는 150 이다.
		hitPoint = MAX_HP;	
	}
	@Override
	public String toString() {
		return "Tank";
	}
}

class Dropship extends AirUnit implements Repairable {
	Dropship() {
		super(125);	//Dripship의 HP는 125 이다.
		hitPoint = MAX_HP;
	}
	@Override
	public String toString() {
		return "Dropship";
	}
}

class Marine extends GroundUnit {

	Marine() {
		super(40);
		hitPoint = MAX_HP;
	}
}

class SCV extends GroundUnit implements Repairable {
	SCV() {
		super(60);
		hitPoint = MAX_HP;
	}
	
	void reapir(Repairable r) {
		if( r instanceof Unit7) {
			Unit7 u = (Unit7) r;
			
			while(u.hitPoint != u.MAX_HP) {
				/* Unit의 HP를 증가 시킨다. */
				u.hitPoint++;
			}
			System.out.println(u.toString() + "의 수리가 끝났습니다.");
		}
	}
	@Override
	public String toString() {
		return "SCV";
	}
}

0개의 댓글

관련 채용 정보