※ 주의 : 뇌피셜 함량 높음
1. 인터페이스란?
인터페이스는 추상 메서드의 목록만 있는 유사 클래스이고,
클래스가 이를 받아서 구현할 수 있는데,
(클래스의 상속은 extends를 쓰고 인터페이스는 implements를 쓰며 상속이 아닌 구현이라고 한다!)
구현을 하게 된 클래스는 해당 인터페이스의 추상 메서드 목록을 모두 오버라이드(재정의) 해야하는 의무를 갖게 된다.
2. 그래서 왜 필요하냐?
(1) 자바는 다중 상속을 지원하지 않는다.
마치 사람이라는 클래스가 있고, 학생이라는 클래스가 있으면,
학생이 사람을 상속받는다고 할 수 있는데, (모든 학생은 사람이니까!)
사람과는 별개로 외계인이라는 클래스가 있다면?
이 학생이 사람인 동시에 외계인일 수는 없으니까.
즉, 이미 사람인 학생은 외계인을 상속받을 수도 없고, 그럴 이유도 없는거다.
이렇게, 자식 격인 학생에 대하여, 사람을 상속받는 동시에 외계인을 상속받을 수 없다는 것이다.
(2) 하지만 이렇게 생각해보자.
학생은 공부를 한다.
하지만 외계인 중에도 공부를 하는 외계인이 있다면??
공부하는 외계인이라는 클래스도 학생이랑 같은 메서드(공부하다)를 구현할 것이다.
상속관계로 엮어지지 않는 학생클래스와 외계인클래스. 굳이굳이 같은 메서드를 각각 똑같이 정의해줘야 할까?
그러지 말고, 공부하다 라는 메서드가 포함된 인터페이스를 만들어주면 된다.
이 인터페이스를 학생과 외계인에게 각각 구현시키면 된다.
그러면 둘 다 공부를 할 수 있게 된다.
'코딩 > Java' 카테고리의 다른 글
Java - Static에 대하여... (0) | 2023.06.11 |
---|---|
Java - Interface에 Abstract가 아닌 메서드를 작성할 수 있다?? (0) | 2022.02.05 |
Java Singleton Pattern(싱글톤 패턴) (0) | 2022.01.26 |
java - 다형성에 대한 이해 (0) | 2022.01.23 |
java - 기본 자료형 정리 (0) | 2022.01.19 |