package chap7;

import java.io.IOException;
import java.nio.CharBuffer;

// 인터페이스 예제 : 허용의 의미로 사용 됨
interface Repairable{}

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

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

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

class Tank2 extends GroundUnit implements Repairable{
 Tank2(){
  super( 150 );
  hitPoint = MAX_HP;
 }
 
 public String toString(){ return "Tank"; }
}

class DropShip extends AirUnit implements Repairable{
 DropShip(){
  super( 125 );
  hitPoint = MAX_HP;
 }
 
 public String toString(){ return "DropShip"; }
}

class Marine extends GroundUnit{
 public Marine() {
  super( 40 );
  hitPoint = MAX_HP;
 }
 
 public String toString(){ return "Marine"; }
}

class SCV extends GroundUnit implements Repairable{
 SCV(){
  super( 60 );
  hitPoint = MAX_HP;
 }
 
 void repair( Repairable r ){
  if( r instanceof Unit2 ){
   Unit2 u = (Unit2)r;
   u.hitPoint = u.MAX_HP;
   System.out.println( u + "의 수리 완료");
  }
 }
 
 public String toString(){ return "SCV"; }
}

public class RepairableEx {
 public static void main(String[] args) {
  Tank2 t = new Tank2();
  DropShip d = new DropShip();
  Marine m = new Marine();
  SCV s = new SCV();
  s.repair(t);
  s.repair(d);
//  s.repair(m); // implements로 Repairable을 받지 않은 상태.
 }
}

 

'Java !!!' 카테고리의 다른 글

C++과 Java의 다른점  (0) 2015.04.05
동적할당 정적할당 개념  (0) 2015.04.04
인터페이스 활용 예  (0) 2015.04.03
instanceof 객체관계를 확인  (0) 2015.04.02
상속 예시 한개  (0) 2015.04.01