본문 바로가기
C# 기초문법

[C#] (9) 오버로딩 - overloading

by novices 2022. 9. 19.

이번 포스팅에서는 C# 문법 overloading에 대해서 간략한 설명과 예제를 작성해보겠습니다. 오버로딩은 하나의 함수 이름으로 여러 개의 함수를 입출력만 다르게 선언하여 사용하는 것입니다. 실행 시에는 컴파일러가 매개변수로 입력되는 값을 기준으로 해당되는 함수를 자동으로 실행하게 됩니다. 오버로딩을 쓰는 여러 가지 이유가 있지만 비슷한 기능을 처리하는 함수를 매번 다른 이름으로 선언하여 사용에 혼돈이 올 수 있기 때문이라고 생각합니다. 

 

오버로딩 예제 - 함수 선언 및 실행

함수를 오버로딩 하는 방법은 의외로 간단합니다. 함수를 같은 이름으로 입력과 출력만 다르게 여러 개로 만들면 호출 시 컴파일러가 입력에 맞게 해당되는 함수를 자동으로 실행합니다. 아래는 덧셈 기능을 하는 함수 Addnumber를 overloading 하는 예제입니다. Addnumber함수는 매개변수 인자 개수와 형태, 출력 형태를 다르게 하여 4개의 함수로 선언되었습니다. 컴파일러는 실행 부분에서 입력값을 기준으로 해당되는 오버로딩 함수를 실행합니다. 

using System;

namespace Program
{
    class Program
    {
        public int AddNumber(int number1, int number2)
        {
            return number1 + number2;
        }

        public int AddNumber(int number1, int number2, int number3)
        {
            return number1 + number2 + number3;
        }

        public float AddNumber(float number1, float number2)
        {
            return number1 + number2;
        }
        public float AddNumber(float number1, float number2, float number3)
        {
            return number1 + number2 + number3;
        }

        static void Main(string[] args)
        {
            Program p = new Program();
            
            Console.WriteLine(p.AddNumber(3,5));		//실행결과 8
            Console.WriteLine(p.AddNumber(2,5,8));		//실행결과 15
            Console.WriteLine(p.AddNumber(2.3f,5.7f));		//실행결과 8
            Console.WriteLine(p.AddNumber(1.3f,9.7f,8.2f));	//실행결과 19.2
            
            Console.ReadKey();
        }
    }
}

 

오버로딩 요점

  • 오버로딩은 함수를 같은 이름으로 입력과 출력만 다르게 선언하여 사용하는 것입니다.
  • 오버로딩된 함수는 컴파일러가 실행 구문의 입력값을 기준으로 자동으로 매치되는 함수를 실행합니다.

 

오버로딩 활용

저는 주로 모바일 게임 개발에 C#을 이용하고 있는데 개인적으로 오버로딩을 써서 함수를 작성한 경우는 별로 없었지만 오버로딩을 알고 있으면 게임엔진이나 C#에서 제공하는 다른 클래스를 이용할 때 이해하고 사용이 가능했습니다. 보통 overloading과 같이 나오는 문법 중 override가 있습니다. 오버라이드는 상속받을 때 부모 클래스가 구현한 함수를 자식 클래스에서 재정의 하여 사용하는 것을 뜻하는데 상속을 알기 전에는 예제를 작성하기에 무리가 있습니다. 이후에 상속과 override에 대해서도 정리할 예정입니다. 함수에 대해 자세한 내용이 궁금하시면 함수의 문법과 특징 - 입출력 방법 포스트를 참고하시기 바랍니다.

 

 

댓글