-
extends와 implements의 차이 : 인터페이스가 인터페이스를 extends하는 이유PROGRAMMING/JAVA 2022. 12. 29. 20:00
하루입니다.

...
뭔가 이상하지 않나요?
Wrapper와 AutoCloseable은 interface입니다.
그런데 왜!!!!!!!!!!!!!!!!!!! implements가 아니라 extends일까요!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
그 차이는 interface의 특성과 extends/implements의 차이에 있습니다.
1. interface
- 인터페이스는 선언만 하고 구현하지 않습니다. 구현은 구현클래스의 몫입니다.
2. implements
- 클래스가 인터페이스를 구현하는 경우, 인터페이스의 메소드를 반드시 override 해야합니다.
- override는 부모클래스(여기서는 인터페이스)의 메소드(함수)를 자식클래스(여기서는 구현클래스)가 재정의(구현)하는것을 말합니다.
3. extends
- 클래스가 클래스 / 추상클래스를 상속받는 경우, extends를 사용합니다.
- 반드시 메소드를 재정의할 필요는 없습니다.
- 즉, 메소드를 재정의하지 않고 사용 가능합니다.
정리하자면,
- 인터페이스는 선언만 가능합니다.
- 만약 인터페이스가 implements를 사용해 다른 인터페이스를 받으려한다면 다른 인터페이스의 메소드를 반드시 구현해야 할 것입니다. 인터페이스의 정의에서 벗어나게 됩니다.
- 그렇기 때문에 인터페이스가 인터페이스를 상속받을 때는 implements가 아닌 extends를 사용합니다.
사담
- 포스팅을 작성하며 왜 interface가 implements를 사용하는지, (추상)클래스는 왜 extends를 사용하는지 조금 더 자세히 알게 되었습니다.
- 인터페이스는 구현클래스가 반드시 기능을 재정의해야 하기에 구현(implements)를 사용하고, (추상)클래스는 메소드를 그대로 받아서 사용하기에 상속받는다(구현할 필요 없이 사용만 하면 된다)라는 뜻의 extends를 사용합니다.
단어 중 부적절한 사용 혹은 오용한 단어가 있다면 언제든 피드백 부탁드립니다!
끝!
'PROGRAMMING > JAVA' 카테고리의 다른 글
그러니까 ... bean이 ... jsp 빈이 ... spring 빈이 ... dto가 ... 뭐? (0) 2023.01.10 그래서 Servlet은 html페이지를 반환하는 건가? (0) 2023.01.05 Optional<T>란? (0) 2023.01.01 [ JAVA ] 내가 생각하는 직렬화. 왜 직렬화를 사용하는 걸까? (1) 2022.12.22 내가 생각하는 추상클래스와 인터페이스의 차이 (0) 2022.12.12