객체지향 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 는 여러개 상속이 가능하다.
'Java' 카테고리의 다른 글
BufferedReader & BufferedWriter (0) | 2023.02.06 |
---|---|
[Java/자바] stream, map, collect (0) | 2023.02.06 |
Collections (0) | 2022.09.22 |
오버로딩(Overloading)&오버라이딩(Overriding) (0) | 2022.09.05 |
charAt(), 문자열에서 char 추출하기 (0) | 2022.09.03 |