해결된 질문
작성
·
276
0
1.첫번째 내용에 업캐스팅후 해당 부모의 배열안에 넣는 내용을 배웠는데,
두번째 내용의 도형의 넓이를 구하는 과정에서 먼저 부모배열에 넣은 후 업캐스팅을 하여 메소드 오버라이딩을 보여주는것을 보았습니다.
해당 내용으로 복습하면서, 업캐스팅을 하지 않아도 부모 배열에 넣을 수 있는 것으로 결과물이 나왔습니다.
public static void main(String[] args) {
// 기사 객체 생성 및 초기화
Knight knight = new Knight();
knight.name = "아서스";
knight.hp = 180;
knight.strength = 50;
// 도적 객체 생성 및 초기화
Thief thief = new Thief();
thief.name = "발리라";
thief.hp = 120;
thief.agility = 40;
Adventurer[] advs = { knight, thief };
#toString 내용 출력
for (int i = 0; i < advs.length; i++) {
System.out.println(advs[i]);
}
}
부모 배열에 자식 객체가 그냥 들어가는것으로 보이는데,
업캐스팅을 통해 부모 객체로 통일후 관리하면 어떤이점이 있는지 궁금합니다.
답변 1
1
자식 객체가 부모 타입으로 해석되는 것입니다.
Adventurer 부모 타입이 되고, knight와 thief는 자식 객체가 됩니다.
따라서, 부모 배열에 자식 객체가 들어가는 것 또한 업캐스팅이 됩니다.
서로 다른 객체를 부모의 타입으로 공통 관리할 수 있는 장점이 있습니다.
사실, 업 캐스팅의 장점이라기 보다는 상속의 장점 또는 인터페이스의 장점으로 보는 것이 더 바람직 합니다.