본문 바로가기

교육 노트/C# 강의

[C# 때려잡기] C# 강의 10. 메소드 오버로딩

앞에서 함수를 정의 하는 방법을 배웠다


예를 들어 2개의 매개변수를 더하는 결과를 돌려주는 함수를


static int Plus(int x, int y)

{

return x + y;

}

과 같이 짯을것이다.


해당함수는 int형식의 변수 2개를 받아 두개의 합인 int값을 돌려주는 과정을 거치된다.


그런데 여기에 매개변수로 int 대신에 float타입을 넣으면 어떻게 될까?

따라서 float를 매개변수로 가지는 다른 plus함수를 제작해야할것이다.


static int intPlus(int x, int y)
{
  return x + y;
}
static float floatPlus(float x, float y)
{
  return x + y;
}

이런식으로 사실상 같은 기능 기대하는 함수를 제작할때

함수의 이름이 달라지게 된다.


이럴떄를 위하여 C# 은 메소드 오버로딩이라는 기능을 제공한다.



1. 함수 오버로딩

함수 오버로딩은 같은 이름을 가지는 다른 동작을 하는 함수를 의미한다.



다음과 같이 모두 같은 plus 란 이름을 가진 함수이지만 매개변수와 리턴값이 다른 함수를 제작 할 수 있다.


using System;

namespace HelloWorld
{
class Program
{

static int Plus(int x, int y)
{
return x + y;
}
static float Plus(float x, float y)
{
return x + y;
}
static double Plus(double x, double y)
{
return x + y;
}

static void Main(string[] args)
{
float x = 10;
float y = 5;

float z = Plus(x, y);
Console.WriteLine(z);
}
}
}

다음과같이 매개변수의 타입에 맞게 알아서 동작하게 된다.



2. 함수 오버로딩방법

1 .함수의 이름을 같게 한다
2. 각각의 함수의 파라미터를 다르게 한다.
-> 파라미터가 같으면 구분을 할 수가 없다

같은 파라미터라면 안되는 이유는 조금만 생각해보면 당연한것이다.

컴퓨터가 두개중 무엇을사용해야하는지 알수 없기 때문이다.

728x90