OOP(오브젝트 오리엔티드 프로그래밍; 객체지향프로그래밍) 언어를 사용하다보면 오버로딩, 오버라이딩 이란 용어를 듣게 되는데…
젠장 한 10년 되는거 같은데… 발음이 비스끄무레 하다보니 자꾸 잊어 먹는다.(그럼에도 불구하고 쓰긴하는데… ㅋㅋㅋ)
자꾸 잊어먹는건 적어놓자!!
우선 사전적 의미(https://translate.google.com)
Overloading | Overriding |
과부하 Overload(초과 적재) | 우선 Override(우세하다) |
프로그래머에게 의미
Overloading | Overriding |
함수 추가 정의 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