# 다형성 인생
#### 여러 역할 수행하기
하나의 클래스가 여러 개의 인터페이스(역할)를 구현할 수 있습니다. 이는 마치, 홍팍이가 아들/강사/개발자의 역할을 수행하는 것과 같습니다.
```
interface AAA {
public void aaa();
}
interface BBB {
public void bbb();
}
interface CCC {
public void ccc();
}
// Foo 클래스는 총 3가지 역할(AAA, BBB, CCC)을 수행!
class Foo implements AAA, BBB, CCC {
...
}
```
#### 인터페이스 타입으로 해석
위 코드에서 Foo 클래스의 객체는 각 인터페이스 타입으로도 해석 가능합니다. 홍팍이가 집에서는 아들, 학원에서는 강사, 회사에서는 개발자인 것처럼 말입니다.
```
// 객체 생성
Foo obj = new Foo();
// 인터페이스 타입으로 업캐스팅(해석)
AAA a = obj;
BBB b = obj;
CCC c = obj;
```
인터페이스 타입으로 해석된 객체는, 해당 인터페이스의 메소드만 수행 가능합니다.
```
a.aaa(); // O
b.bbb(); // O
c.ccc(); // O
a.bbb(); // X
b.aaa(); // X
c.bbb(); // X
```
## 문제
쓰리잡 인생 홍팍이는 3가지의 직업(개발자, 강사, 마사지사)을 가지고 있다.
![클라우드스터딩-자바-인터페이스-다형성](https://i.imgur.com/mfpIsmU.png)
출력 예와 같이 홍팍이가 쓰리잡을 뛸 수있도록, 뼈대코드 수정하시오.
## 출력 예
```
홍팍 -> Java 프로그래밍 중!
홍팍 -> 자료구조 수업 중!
홍팍 -> 마사지 중!
```