프로그래밍을 하다보면 중복된 함수를 사용하면 좋을 것 같은 상황이 오기 마련이다.
예를 들어 인자를 2개, 3개, 4개 받는 덧셈 함수를 만들고 싶은데 함수명을 plus2, plus3, plus4
만들었다고 가정하자. 이렇게 된다면 함수에 대한 명확성이 굉장히 떨어지고 이상하게 보인다.
다른 예로는 plus 함수를 A회사 클래스, B회사 클래스, C회사 클래스... 이렇게 수십개의 클래스에
적용하고 싶은데 이렇게 된다면 각 회사 클래스마다 매번 plus함수를 정의 해줘야 한다.
이러한 불편함들을 해결해줄 수 있는 기능으로 오버로딩과 오버라이딩이 존재하는데
이 개념에 대해서 설명하고자 한다.
오버로딩(Overloading)이란?
오버로딩은 매개변수의 개수와 유형이 다른 동일명 메서드를 여러 개로 정의 가능하고
동일한 메서드 명으로 각각의 기능을 호출할 수 있다.
위 코드를 보면 앞서 말했던 plus2, plus3, plus4와 같은 경우를 오버로딩하여 구현해 놓은
모습이다. 함수명은 모두 같지만 매개변수의 개수와 유형이 다르다는 조건을 만족했기 때문에
각각의 다른 기능으로 구성할 수 있다.
똑같은 Plus를 사용해도 각각의 함수가 잘 실행되어 결과가 다르게 나온 모습을 볼 수 있다.
오버라이딩(Overriding)이란?
부모 클래스에서 정의된 메서드를 상속받은 자식 클래스에서 재정의 할 수 있는 기능이다.
위 코드는 Overriding클래스의 Plus 함수를 A회사, B회사, C회사 클래스에서 재정의 하고 있다.
각 회사 클래스 들은 부모 클래스의 Plus 함수를 재정의 하여 사용하고 있지만 모두 내용을
공유하고 있는 것이 아닌 각각의 고유한 기능으로 재정의되어 사용되고 있다.
그리하여 결과는 이러한 형식으로 다르게 나오게 된다.
결론
오버로딩과 오버라이딩을 적절히 사용하는 것은 큰 도움이 되지만
너무 남발할 시 코드의 복잡성이 굉장히 증가할 수 있다는 점을 명심해야 한다.
'TIL > C#' 카테고리의 다른 글
[Unity] 디버그를 하는 이유와 방법 (디버깅) (0) | 2023.12.04 |
---|---|
[C#] 인터페이스와 추상클래스에 대하여 (1) | 2023.11.15 |
[C#] 객체지향 (OOP, SOLID) (0) | 2023.11.13 |
[C#] 스택, 힙 메모리란 무엇인가 (0) | 2023.11.10 |
[C#] 정렬 알고리즘 (선택 정렬, 버블 정렬) (0) | 2023.11.09 |