Java

extends와 implements 차이

꿈꾸는야오옹 2023. 2. 1. 22:33

객체지향 OOP(Object-Oriented Programming)의 특징 중 상속성에 관한 이야기이다.

프로젝트를 진행하며 자주 사용하게 되었는데 차이점이 궁금하였다.

extends

  • 부모 객체에서 선언, 정의를 모두 한다.
  • 자식에서 오버라이딩을 할 필요가 없다.
  • 부모의 메소드, 변수를 그대로 사용 가능하다.

나의 경우에는 프로젝트를 진행할때

- entity를 구성시 계속 중복되는 필드들을 따로 class에 담아 extends해 주는 방식으로 자주 사용하였다.

- Repository 를 사용할때 extends JpaRepository를 하여 JPA에서 기본으로 제공하는 메서드를 이용했다.


implements

  • 부모 객체는 선언만 한다.
  • 자식에서 정의를 하는 오버라이딩(재정의)가 필요하다.

나의 경우에는

- 주로 ServiceProcess class 에 implements Service를 하여 오버라이딩해 ServiceProcess에서 메서드를 직접 정의했다.

- 그 외에도 interface 를 많이 사용하였기에 자주 쓰였다.

 

 

간단하게 사용시 주의점을 정리하자면

  • extends는 일반 클래스, abstract 클래스 상속에 사용되고 implement는 interface 상속에 사용된다.
  • 하지만 같은 종류인 class가 class를 상속받을 때, interface가 interface를 상속 받을 땐 extends를 사용한다.
  • extends는 한개만 가능하고 implement 는 여러개 상속이 가능하다.