평생 소장! 19,800 원 15,000 원(계좌이체 구매 한정)


기업은행: 206-021800-01-029

예금주: 박세홍


카톡 ID: chaesam(카톡 아이디 검색 후, 문의 주세요!)

이메일: mail@cloudstudying.kr

업 캐스팅

부모 타입으로 해석하기

업 캐스팅이란, 자식 객체를 부모의 타입으로 해석하는 것입니다. 예를 들어 아래와 같은 상속 관계가 있을 때,

  1. class Animal { ... }
  2. class Cat extends Animal { ... }
  3. class Dog extends Animal { ... }
  4. class Horse extends Animal { ... }

Cat의 인스턴스(객체)는, Animal로 해석 될 수 있습니다.

  1. // 고양이 객체 생성
  2. Cat c = new Cat();
  3. // 고양이는 동물이다(O)
  4. Animal a = c; // 고양이 객체를 동물로 해석

하지만 위 내용의 역은 성립하지 않음을 주의하세요.

  1. // 동물 객체 생성
  2. Animal aaa = new Animal();
  3. // 동물은 고양이다(X)
  4. Cat ccc = aaa; // ERROR!

그룹화

이러한 업 캐스팅은, 다양한 객체들을 부모의 타입으로 관리할 수 있게 합니다.

  1. Animal c = new Cat(); // 고양이는 동물이다
  2. Animal d = new Dog(); // 개는 동물이다
  3. Animal h = new Horse(); // 말은 동물이다
  4. // 동물 배열 - 고양이, 개, 말
  5. Animal[] animals = { c, d, h };

문제

주어진 코드는 Knight 및 Thief 클래스를 정의하고 있다. 두 클래스의 공통 요소를 추출하여 부모 클래스 Adventurer를 작성하고, 출력 예와 같은 결과를 얻으시오.
클라우드스터딩-자바-부모-클래스-추출

출력 예

  1. [아서스] HP: 180
  2. [발리라] HP: 120
관련 강의로 이동

코드: java 1.8

public class UpCasting {
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 adv0 = knight;
Adventurer adv1 = thief;
//
Adventurer[] advs = { adv0, adv1 };
//
for (int i = 0; i < advs.length; i++) {
System.out.println(advs[i].toString());
}
}
}
/* 1. Adventurer . */
class Adventurer {
/* 1.1 . */
/* 1.2 . */
}
/* 2. Knight Adventurer . */
class Knight {
/* 2.1 . */
String name;
int hp;
int strength; //
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

입력

정답이 궁금하다면? 코드를 제출해보세요!