티스토리 뷰
Development/Technical Interview
[면접 준비 - Java]메서드 오버로딩 vs. 메서드 오버라이딩
Vagabund.Gni 2022. 10. 25. 21:24728x90
반응형
메서드 오버로딩과 오버라이딩은 모두 자바의 다형성을 구현하는 방법이다.
게다가 이름과 구현과정까지 나름 비슷해서 가끔 헷갈릴 때가 있는데,
오늘도 헷갈린 김에 잊지 않으려 정리를 한다.
Method Overloading
가장 먼저 짚고 넘어가야 할 오버로딩과 오버라이딩의 근본적인 차이는 두 행위가 구현되는 타이밍이다.
오버로딩의 경우 컴파일 과정에서 구현되며, 오버라이딩은 실행시, 혹은 런타임으로 구현된다.
계속해서 오버로딩은 같은 클래스 안에서 두 개 이상의 같은 이름을 가진 메서드를 정의하는 것을 가리키며,
여기엔 아래와 같은 몇 가지 규칙이 존재한다.
- 메서드 이름이 같아야 한다.
- 리턴 타입과 예외처리는 같아도 되고 달라도 된다.
- 파라미터의 개수가 다르거나, 같다면 타입이 달라야 한다.
즉, 시그니처(변수)가 변경된 동일한 이름의 메서드를 정의하는 것이라고 할 수 있으며
사용되는 메서드를 정하는 것은 메서드가 호출될 때 사용되는 변수라는 것도 추측할 수 있다.
마지막으로 메서드 오버로딩의 장점은 당연하게도 개발 시간 단축과 난이도 하향 및 가독성 향상,
혹은 Static Polymorphism을 구현하는데 유리하다는 것 등이 있다.
Method Overriding
오버라이딩은 자식 클래스가 부모 클래스의 메서드를 재정의하는 것을 가리킨다.
여기에도 앞서 본 것과 비슷하게 몇 가지 규칙이 존재한다.
- 부모 클래스의 메서드와 같은 이름의 메서드를 정의해야 한다.
- 메서드 파라미터의 개수와 타입이 같아야 한다.
- 메서드 리턴 타입이 같아야 한다.
- 메서드 바디는 같아도 되고 달라도 된다.
즉 시그니처를 그대로 두고 바디만 변경하는 것이라 할 수 있다.
또한 오버로딩에서 호출시 사용되는 변수가 메서드를 결정했던 것과는 달리,
오버라이딩에서는 해당 메서드를 호출하는 객체에 따라 달라지게 된다.
Summary
Method Overloading | Method Overriding | |
다형성 | 컴파일, 혹은 Static Polymorphism | 런타임, 혹은 Dynamic Polymorphism |
바인딩 | 정적 바인딩 | 동적 바인딩 |
목적 | 가독성 향상 | 메서드의 구체적인 구현 |
파라미터 | 개수가 다르거나 타입이 다름 | 개수와 타입이 같음 |
리턴 타입 | 상관 없음 | 반드시 같아야 함 |
예외 | 상관 없음 | 예외를 던지지 않거나 같거나 좁은 범위의 예외를 던져야 함 |
클래스 | 동일 클래스 | 상속 관계의 두 클래스 |
상속 | 요구되지 않음 | 반드시 필요함 |
static, final, private 메서드 | 가능 | 불가능 |
속도 | 빠름 | 느림(동적 바인딩) |
조합 | 정적 프로그래밍 | 객체 지향 프로그래밍 |
접근 제어자 | 모두 사용 가능 | 부모와 같거나 넓어야 함 |
반응형
'Development > Technical Interview' 카테고리의 다른 글
[면접 준비 - Spring]Spring Boot, AOP, REST Docs (1) | 2022.12.09 |
---|---|
[면접 준비 - Cloud]PaaS, Docker, 그리고 (2) | 2022.12.09 |
[면접 준비 - Java]JVM 구조(1), JVM Workflow (8) | 2022.10.30 |
[면접 준비 - Java]자녀 클래스에서 부모 클래스 생성자 호출 (0) | 2022.10.25 |
[면접 준비 - Java]생성자(Constructor) (2) | 2022.10.24 |
[면접 준비 - Java]클래스(Class)와 객체(Object) (2) | 2022.10.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 유럽
- 남미
- spring
- 면접 준비
- RX100M5
- 알고리즘
- 칼이사
- 파이썬
- 세계일주
- 야경
- 스트림
- Algorithm
- 백준
- 기술면접
- 세모
- Backjoon
- 지지
- 자바
- 중남미
- 스프링
- BOJ
- 맛집
- Python
- java
- 동적계획법
- a6000
- 여행
- 세계여행
- 유럽여행
- 리스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함