Press "Enter" to skip to content

오버로딩(overloading), 오버라이딩(overriding) 뭐가 다르지?

OOP(오브젝트 오리엔티드 프로그래밍; 객체지향프로그래밍) 언어를 사용하다보면 오버로딩, 오버라이딩 이란 용어를 듣게 되는데…

젠장 한 10년 되는거 같은데… 발음이 비스끄무레 하다보니 자꾸 잊어 먹는다.(그럼에도 불구하고 쓰긴하는데… ㅋㅋㅋ)

자꾸 잊어먹는건 적어놓자!!

우선 사전적 의미(https://translate.google.com)

OverloadingOverriding
과부하
Overload(초과 적재)
우선
Override(우세하다)

프로그래머에게 의미

OverloadingOverriding
함수 추가 정의
int test(int a); 라는 함수가 있다 치면,
int test(int a, int b); 라는 함수를 정의해서 사용할 수 있다.
호출할때 함수명이 test인데, 파라미터의 갯수나 타입이 서로 달라야 한다.
-> 당연히 그래야 어느 함수를 호출하는지 구분이되지요.
함수 재정의
파생 클래스에 동일한 함수를 재정의해서 기능을 바꿔버림.

예를 들자면 org라는 베이스 클래스에 두 숫자를 입력 받아 더하는 add라는 함수가 있는데,
class org{
int add(int a, int b){
return a + b;
}
}

파생 클래스 neo에 add를 재정의해서 두 숫자를 입력받아 더한 다음에 3을 더 더하는 기능으로 재정의 한다.
class neo:org{
int add(int a, int b){
return a + b + 3;
}
}

neo 인스턴스에서 add를 아래와 같이 호출하면 33이 리턴된다.
neo 클래스에는 add 함수가 2개 정의 되어 있지만 파생 클래스에 오버라이딩 된 함수가 호출된다.
neo n = new neo();
rtn = n->add(10 + 20);

언어에 따라 파생클래스의 함수에 overriding 과 같은 키워드를 써줘야 하는 것이 일반적이다.

Be First to Comment

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다