분류 | 게시판 |
베스트 |
|
유머 |
|
이야기 |
|
이슈 |
|
생활 |
|
취미 |
|
학술 |
|
방송연예 |
|
방송프로그램 |
|
디지털 |
|
스포츠 |
|
야구팀 |
|
게임1 |
|
게임2 |
|
기타 |
|
운영 |
|
임시게시판 |
|
아래와 같이 작성했는데 문제가 Unit u =(Unit)r; 부분입니다. 변수 r이 어차피 Tank t로 받기 때문에 Unit으로 형변환 되는건 알겠습니다만... 왜 (Unit)이 붙어야 하는지 모르겠습니다. Tank보다 Unit이 상위이기 때문에 굳이 (Unit)이 안 붙어도 될 것 같은데 (Unit)이 안 붙으면 컴파일할 때 오류가 발생해요 이유가 뭘까요?? ================================================================================== class Question2 { public static void main(String[] args) { Tank t = new Tank(); SCV scv = new SCV(); scv.repair(t); } } interface Repairable { } class Unit { int hitpoint; final int max_hp; Unit(int hp) { max_hp = hp; } } class Tank extends Unit implements Repairable { Tank() { super(150); hitpoint = max_hp; } public String toString() { return "Tank"; } } class SCV extends Unit implements Repairable { SCV() { super(60); hitpoint = max_hp; } public String toString() { return "SCV"; } void repair(Repairable r) { if(r instanceof Unit) { Unit u; u = (Unit)r; while(u.hitpoint!=u.max_hp) { u.hitpoint++; } System.out.println(u.toString() + "의 수리가 끝났습니다."); } } } |
죄송합니다. 댓글 작성은 회원만 가능합니다.