``` //질문 1. 나이가 19살 이하일 경우 영화시청을 제한하는 코드 // 2. 다형성 사용 정의(밑에 주석으로 달아놓았는데 맞는지 궁금합니다) //다형성 // 인터페이스에서는 상수와 추상메서드만 올 수 있다. interface A { public static final AGE =19; public abstract void usageLimt(); // 사용제한 } class SmartPhone implements A { public abstract void useLimit() { if(AGE<=19) { // 만약 나이가 19살 이하일 경우 영화 감상을 못하게 막아놓음 (코드를 모르겠어용) System.out.println("영화시청을 할 수 없습니다.") else { System.out.println("영화시청이 가능합니다.") } } public void watchingMovie() { System.out.println("영화시청!!") } } public class SmartPhoneTest { public static void main(String[ ] args) { A a = new SmartPhone(); // A를 구현하는 스마트폰을 객체화시켜서 A의 참조변수에 주소값을 할당 a.watchingMovie(); // 하지만 데이터 타입이 다름으로 실행이 안됨 interfaceA에 정의되어 있는 메서드와 상수만 접근이 가능 // 즉 SmartPhone의 여러가지 기능 중에서 기능을 제한하고 싶을 떄 이러한 것을 사용 // ex) 어린이 폰에는 스마트폰 게임 결제 시스템을 막아놓을 떄 } } ```
# 다형성이란? 다형성은 하나의 객체가 관점에 따라 여러가지로 해석 되는 성질이에요 ## 다형성의 예 철수는 아들(부모님의 관점)임과 동시에 오빠(동생의 관점)이며, 또한 학생(선생님의 관점)이면서, 남친(여자친구의 관점)일 수 있겠죠?? ## 다형성의 코드화 먼저 남친과 학생이라는 인터페이스를 만들어봅시다. **BoyFriend.java** ```java public interface BoyFriend { public void iLikeYou(); } ``` **Student.java** ``` public interface Student { public void iDontWannaStudy(); } ``` 다음으로 남친과 학생을 구현하는 Person 클래스를 만들어 볼까요? **Person.java** ``` public class Person implements BoyFriend, Student { String name; public Person(String name) { this.name = name; } public void iLikeYou() { System.out.println("알라뷰~~♥️"); } public void iDontWannaStudy() { System.out.println("공부하기 싫다~~~~ ㅠㅠ"); } } ``` 마지막으로 Person 객체를 테스트 해볼까요? **PersonTest.java** ``` public class PersonTest { public static void main(String[] args) { // Person 객체 생성 Person tom = new Person("Tom"); BoyFriend bf = tom; // 남친 Student st = tom; // 학생 bf.iLikeYou(); // 남친의 자격으로 메소드를 수행 st.iDontWannaStudy(); // 학생의 자격으로 메소드를 수행 } } ```