티스토리 뷰

요약

상속 관계의 경우 -> 오버라이딩

파라미터만 다른 경우 -> 오버로딩

개요

  오버로딩과 오버라이드는 프로그래밍을 하다보면 아마 평생동안 만나게 되는 단어일 것이다. 두 영단어가 비슷해서 의미를 설명하고 맞는 단어를 선택하려고 하면 헷갈리는 경우가 종종 마주하게 된다. 이번 포스팅을 통해 오버로딩과 오버라이딩를 이해하고 내가 쓰는 여러가지 암기법들을 전해주고자 한다.

의미

Overloading

 프로그램을 작성하다보면 같은 이름의 함수를 작성 할 수 없다는 것을 알 수 있다. 그 이유는 호출한 함수가 어떤 함수인지 컴파일러가 구분 할 수 없기 때문이다. 그렇지만 같은 함수를 작성해야하는 경우가 존재 할 수 있다. 몇가지 방법들이 있는데 그 중 하나가 namespace를 이용하는 것이다.

2019/04/21 - [C++] - [C++] namespace 란 무엇인가?

 

[C++] namespace 란 무엇인가?

Microsoft에서는 namespace 를 다음과 같이 정의한다. 네임스페이스는 내부 식별자(형식, 함수, 변수 등의 이름)에 범위를 제공하는 선언적 영역입니다. 책에서도 위와 같이 정의하는 경우가 많은데 글은 이해가..

pppgod.tistory.com

 그러나 같은 일을 하는 함수인 경우에는 namespace를 이용하는 것이 적절하지 않다. 그때 사용하는 방법이 바로 오버로딩이다. 예시를 보자.

파라미터의 타입이 다른 경우

int func(int param);
int func(double param);

파라미터의 갯수가 다른 경우

int func(int param1);
int func(int param1, int param2);

위와 같이 파라미터의 타입이나 파라미터가 다른 경우 같은 이름의 함수명을 허용한다. 이를 오버로딩이라고 한다.

 

주의 : 반환형이 다른 경우에는 오버로딩을 허용하지 않는다.

Override

 오버라이드는 오버로딩과 다르게 클래스의 상속관계에서 사용한다. 객체지향언어의 꽃인 다형성과 관계가 깊기 때문에 잘 기억하도록 해야한다. 상속은 두 클래스가 본질적으로 같은 성질을 갖지만 함수의 동작 방식은 다를 수 있다. 

 

 예를 들어 영어와 수학을 가르치는 두 명의 선생님이 있다고 하자. 두 선생님은 공통점으로 수업을 진행하지만 수업의 내용은 다르다.  이런 경우 두 과목의 선생님은 수업을 각각 다른 방식으로 오버라이드를 하게 된다. 

암기법

 나의 기억력은 좋지 않기 때문에 다른 곳에서 연상해서 외우는 경우가 많다. 몇 가지를 소개하겠다.

사전적 의미

 처음 오버로딩과 오버라이드를 배우게 되면 두가지의 용어가 쉽게 외워지지 않는다. 하지만 두 영단어의 의미는 확연하게 다르기 때문에 두 영단어의 의미를 이해하면 좀 더 쉽게 이해할 수 있다. naver 사전의 검색 결과는 다음과 같다.

Override
1. (직권을 이용하여 결정·명령 등을) 기각하다
2. …보다 더 중요하다
3. (자동으로 진행되는 과정을) 중단시키다
Overload
1. 과적하다
2. 너무 많이 주다
3. (컴퓨터전기 시스템 등에) 과부하가 걸리게 하다

Override의 2번 의미가 우리가 배우는 사전적 의미와 가깝다. 부모 클래스의 함수보다 자식 클래스가 오버라이드한 함수가 더 중요하기 때문이다. 

 

Overload의 의미들은 과하게 한다는 의미가 많다. 그 이유를 생각해보면 오버로딩을 하는 경우는 대게 깔끔한 코딩을 위해 사용하는 경우가 많다. 그래서 과적의 의미를 사용하는게 아닐까 싶다.

자바 annotation (@Override)

 자바의 어노테이션 중에서 @Override 가 있다. 컴파일러에게 오버라이드 되었다고 알려주어 오류를 방지하는 역할을 한다. 하지만 오버로딩의 경우에는 이러한 어노테이션이 존재하지 않는다. 오버라이드를 설명하고 싶은데 단어가 잘 기억나지 않는다면 어노테이션을 떠올려보자.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함