Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- aop
- 배열
- 개발자 취업
- css
- CS
- 이진 탐색(binary search)
- wil
- 면접(java
- 99클럽
- 코딩공부
- 항해99
- 프로그래머스
- HTML
- 정렬 알고리즘(sort algorithm)
- github
- Entity
- Spring
- 자바
- GIT
- 코딩
- 코딩테스트 준비
- cs 공부)준비
- 코딩문제
- Til
- Grafana
- 회고
- ArrayList
- Java
- 메서드
- 자료구조
Archives
- Today
- Total
hayu's 개발 일지
[TIL]240405 extends, implements 차이 본문
extends, implements 차이
? 왜 extends를 하지 않았는데 @Override를 사용할까?
public class MeetingServiceImpl implements MeetingService {
@Override
@Transactional
public Long updateMeeting(UpdateMeetingRequestDto requestDto, Member member, Long meetingId) {
Meeting meeting = meetingRepository.findByIdAndMember(meetingId,member)
.orElseThrow(()-> new CustomException(ErrorCode.AUTHORITY_ACCESS));
meeting.updateMeeting(requestDto);
return meetingId;
}
}
상속이란?
- 상자 하나하나는 모두 객체이고, 자바에서는 calss이다.
- 이러한 객체를 표현하기 위해 만들어진 것이 상속이다.
- 상속 시, 하위 객체(자식)는 상위 객체(부모)의 특징(메서드, 변수 등)을 물려받게 된다.
이때, 상위 객체(부모)의 특징(메서드, 변수 등)을 새롭게 구현하는지, 그대로 사용하는지에 따라서 상속의 형태가 갈리게 된다.
extends
- 대표적인 상속의 형태이다.
- 부모에서 선언(정의)을 모두하여, 자식은 오버라이딩할 필요 없이 부모의 특징(메서드, 변수 등)을 모두 사용할 수 있다.
→ 부모의 특징을 연장해서 사용한다.
- java는 다중상속을 지원하지 않는다. 즉, 부모 클래스가 두 개 이상 존재할 수 없다.
( java는 implements를 사용하여 여러 인터페이스를 상속 받을 수 있다.)
- class가 class를 상속받을 때, interface가 interrface를 상속받을 때는 extends를 사용한다.
implements(interface 구현)
- 부모 객체는 선언만 하여, 정의는 반드시 자식이 오버라이딩하여 사용한다.
→ 부모의 특징을 도구로 사용해 새로운 특징을 만들어 사용한다.
- implements는 여러개 사용 가능하다.
- 이러한 구현은 부모의 메소드를 재정의하기 때문에 상속의 의미가 없다고 생각할 수 있지만 java에서 인터페이스 상속은 계약 및 분류의 의미가 강하다고 한다.
⇒ implement를 하면 @Override 를 사용하는 이유: 상속받은 메서드를 재정의할 때 메서드 이름이 틀리지 않게 쓰기 위한 에너테이션이다. 메서드의 이름이 다를 때 @Override 이 없다면 상속받은 것이 아니라 새로운 메서드를 만들어 사용한 것이 된다. (실수를 컴파일러 단계에서 알 수 있게 된다.)
참고 자료
- https://velog.io/@hkoo9329/%EC%9E%90%EB%B0%94-extends-implements-%EC%B0%A8%EC%9D%B4
- https://wooono.tistory.com/261
'스터디 > spring' 카테고리의 다른 글
[TIL]240426 SSE(Server-Sent-Events) (0) | 2024.04.26 |
---|---|
[TIL]240419 Prometheus & Grafana (1) | 2024.04.19 |
[TIL]240329 스프링 부트와 AWS로 혼자 구현하는 웹서비스: -5장 스프링 시큐리티 & 인증, 인가 (3) | 2024.03.29 |
[TIL]240322 스프링 부트와 AWS로 혼자 구현하는 웹서비스: -4장 머스테치 & CRUD (1) | 2024.03.22 |
[TIL]240315 스프링 부트와 AWS로 혼자 구현하는 웹서비스: -3장 JPA (0) | 2024.03.15 |