게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
자바 형변환 질문있습니다.
게시물ID : programmer_12758짧은주소 복사하기
작성자 : 풀런다린다
추천 : 0
조회수 : 528회
댓글수 : 7개
등록시간 : 2015/08/16 19:15:38

아래와 같이 작성했는데 문제가
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() + "의 수리가 끝났습니다.");
                }
        }

}


전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호