메소드 오버로딩 ( Method Overloading )

2016. 12. 12. 12:58C# 콘솔( Console )/메소드

1. 메소드 오버로딩 ( Method Overloading )



        접근지정자 반환형식 메소드명(매개변수1, 매개변수2) 
        { 
            메소드 실행문
        } 


      접근지정자 자료형 메소드명(매개변수1, 매개변수2) 
        { 
            메소드 실행문
        } 

 

      접근지정자 자료형 메소드명(매개변수1, 매개변수2) 
        { 
            메소드 실행문
        } 



   -> 메소드 오버라이딩이란 같은 명을 가진 메소드가 전달받은 매개변수의 자료형에 따라 호출이 달라지는 것을 말합니다.
   -> 메소드의 명은 같더라도 메소드를 선언할 때 인자의 자료형을 다르게 선언하거나 자료형이 같다면 선언한 인자의 수를 다르게 하면됩니다.
   -> C언어에서는 함수 오버로딩을 선언할 수 없었던 이유는 함수의 명만 가지고 호출을 하기 때문에 같은명의 함수를 선언하지 못하기 때문입니다.


ex)



        static void Main(string[] args)

        {

            Console.WriteLine(Add(77, 7));

            Console.WriteLine(Add(77.7, 7.7));

            Console.WriteLine(Add(77, 7, 7));

        }


        static int Add(int num1, int num2)

        {

            Console.WriteLine("int형 2개 인자");

            return num1+num2;

        }

        static double Add(double num1, double num2)

        {

            Console.WriteLine("double형 2개 인자");

            return num1 + num2;

        }

        static int Add(int num1, int num2, int num3)

        {

            Console.WriteLine("int형 3개 인자");

            return num1 + num2 + num3;

        }

 


해설)



1. Console.WriteLine(Add(77, 7));

-> 메소드명이 Add이고, 인자의 자료형이 정수형인 메소드( static int Add(int num1, int num2) )를 호출합니다.

-> num1의 값이 77, num2의 값이 7이고 return( 반환값 )이 num1 + num2이므로 77 + 7 = 84를 반환하게 됩니다.


2. Console.WriteLine(Add(77.7, 7.7));

-> 메소드명이 Add이고, 인자의 자료형이 실수형인 메소드( static double Add(double num1, double num2) )를 호출합니다.

-> num1의 값이 77.7, num2의 값이 7.7이고 return( 반환값 )이 num1 + num2이므로 77.7 + 7.7 = 85.4를 반환하게 됩니다.


3. Console.WriteLine(Add(77, 7, 7));

-> 메소드명이 Add이고, 인자의 자료형이 정수형인 메소드( static double Add(int num1, int num2, int num3) )를 호출합니다.

-> num1의 값이 77, num2와 num3의 값이 7이고 return( 반환값 )이 num1 + num2 + num3이므로 77 + 7 + 7 = 91를 반환하게 됩니다.