전체 코드

namespace CSharp
{
    internal class Program
    {
        // 오버로딩
        // 함수 이름의 재사용

        
        static int Add(int a, int b)
        {
            Console.WriteLine("Add int 호출");
            return a + b;
        }
        // 선택적 매개 변수
        // 필수적으로는 문자를 2개을 받고 3번째 인자는 옵션이다. 아무것도 없으면 기본값은 0이다라는 의미의 함수
        static int Add(int a, int b, int c = 0)
        {
            Console.WriteLine("Add int 호출");
            return a + b + c;
        }
        static int Add(int a, int b, int c = 0, float d = 1.0f, double e = 3.0)
        {
            Console.WriteLine("Add int 호출");
            return a + b + c;
        }
        //static int Add(int b, int a)
        //{
        //    Console.WriteLine("Add int 호출");
        //    return a + b;
        //}

        //static void Add(int a, int b)
        //{
        //    Console.WriteLine("Add int 호출");
        //    //return a + b;
        //}
        // 함수의 반환 형식과  b, a 위치 변화는 오버로딩을 할 수 없다
        static float Add(float a, float b)
        {
            Console.WriteLine("Add float 호출");
            return a + b;
        }
        


        
        static void Main(string[] args)
        {
            int ret = Program.Add(2, 3);
            float ret2 = Program.Add(2.0f, 3.2f);
            Program.Add(1, 2, d: 2.0f);

            Console.WriteLine(ret);
            Console.WriteLine(ret2);
        }
    }
}

1. 메서드 오버로딩이란?

  • 동일한 이름의 메서드를 여러 개 정의할 수 있는 기능입니다.
  • 매개변수의 수, 타입, 순서에 따라 서로 다른 메서드로 인식됩니다.
  • 반환형은 오버로딩을 결정하는 기준이 되지 않습니다.

2. 오버로딩의 장점

  • 코드 재사용성 향상: 같은 기능을 수행하는 메서드를 매개변수에 따라 다양하게 사용할 수 있습니다.
  • 가독성 증가: 관련된 기능을 하나의 이름으로 통합하여, 호출 시 어떤 종류의 인수를 전달하는지에 따라 자동으로 알맞은 메서드가 선택됩니다.
  • 유연한 함수 설계: 선택적 매개변수 등을 활용하여 기본값을 설정할 수 있어, 다양한 입력 상황에 대응할 수 있습니다.

3. 오버로딩 규칙

  • 매개변수 차이:
    • 매개변수의 가 다르거나
    • 타입 혹은 순서가 다르면 오버로딩이 가능합니다.
  • 반환형 무관:
    • 반환형이 다르더라도, 매개변수 시그니처가 동일하면 오버로딩 불가합니다.
  • 매개변수 이름은 영향 없음:
    • 매개변수 이름만 다른 경우는 오버로딩으로 인정되지 않습니다.

4. 예제 코드 개요

  1. 정수 덧셈 (2개 매개변수)

    static int Add(int a, int b)
    {
        Console.WriteLine("Add int 호출");
        return a + b;
    }
    • 두 개의 정수를 받아 덧셈 결과를 반환합니다.
  2. 정수 덧셈 (3개 매개변수, 선택적 매개변수 포함)

    static int Add(int a, int b, int c = 0)
    {
        Console.WriteLine("Add int 호출");
        return a + b + c;
    }
    • 세 번째 매개변수 c에 기본값 0을 주어, 호출 시 인수를 생략할 수 있습니다.
  3. 실수 덧셈

    static float Add(float a, float b)
    {
        Console.WriteLine("Add float 호출");
        return a + b;
    }
    • 매개변수 타입이 float로 다르므로 별도의 오버로딩된 메서드로 구분됩니다.
  4. 중복 정의 불가능한 경우

    • 매개변수의 이름만 다르거나 반환형만 다른 경우는 오버로딩 불가하여 컴파일 오류가 발생합니다.

profile
李家네_공부방

0개의 댓글