# 인터페이스와 다형성
지난번 수업시간에 업캐스팅이란 자식객체를 부모타입으로 나타낼 수 있다고 ( ex : 고양이는 동물이다 Animal c = new Cat( ); )
배웠는데 스마트폰 객체를 인터페이스 타입으로 나타낼 수 있다는 건 업캐스팅은 부모클라스가 아닌 인터페이스로도 가능하다는 말인가요?
#### CODE <a class='btn btn-default' href='/codes/51585'>Link</a>
```
public class Polymorphism {
public static void main(String[] args) {
// 성기사 객체 생성
HolyKnight uther = new HolyKnight("우서", 180);
// 탱커로서의 역할 수행
Tanker t = uther;
t.increaseHp();
// 힐러로서의 역할 수행
Healer h = uther;
h.heal();
}
}
interface Tanker {
public void increaseHp();
}
interface Healer {
public void heal();
}
/* 1. 탱커와 힐러 역할을 부여하세요. */
class HolyKnight implements Tanker, Healer{
private String name;
private int hp;
public HolyKnight(String name, int hp) {
this.name = name;
this.hp = hp;
}
/* 2. Tanker의 메소드를 오버라이딩하세요. */
public void increaseHp(){
System.out.println("전체 체력 +50 증가시킵니다.");
}
/* 3. Healer의 메소드를 오버라이딩하세요. */
public void heal(){
System.out.println("체력을 +30 회복합니다.");
}
}
```
#### INPUT
```
```
#### OUPUT
```
전체 체력 +50 증가시킵니다.
체력을 +30 회복합니다.
```
haesamq님의 답변
객체의 업 캐스팅은
클래스래스 상속 관계 및 구현 관계에서 동작합니다.
따라서 자식 객체는
부모 클래스 타입으로 해석 가능하고,
또 상위 인터페이스 타입으로도 해석 가능합니다.
jminie님의 답변
감사합니다!!!