# 인터페이스와 다형성 지난번 수업시간에 업캐스팅이란 자식객체를 부모타입으로 나타낼 수 있다고 ( 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 회복합니다. ```
객체의 업 캐스팅은 클래스래스 상속 관계 및 구현 관계에서 동작합니다. 따라서 자식 객체는 부모 클래스 타입으로 해석 가능하고, 또 상위 인터페이스 타입으로도 해석 가능합니다.
감사합니다!!!