```
//질문 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) 어린이 폰에는 스마트폰 게임 결제 시스템을 막아놓을 떄
}
}
```
sehongpark님의 답변
# 다형성이란?
다형성은 하나의 객체가 관점에 따라 여러가지로 해석 되는 성질이에요
## 다형성의 예
철수는 아들(부모님의 관점)임과 동시에 오빠(동생의 관점)이며, 또한 학생(선생님의 관점)이면서, 남친(여자친구의 관점)일 수 있겠죠??
## 다형성의 코드화
먼저 남친과 학생이라는 인터페이스를 만들어봅시다.
**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(); // 학생의 자격으로 메소드를 수행
}
}
```