블로그 이미지
내게 능력 주시는 자 안에서 내가 모든것을 할수 있느니라 - 빌립보서 4 : 13 - happydong

카테고리

Happydong (1363)
프로그래밍 (156)
MUSIC (16)
인물 (3)
Utility (10)
세미나 소식&내용 (22)
IT뉴스 (18)
운동 (830)
CAFE (10)
Life (282)
Total
Today
Yesterday



ㅁ 오버로딩(Overloading)


 오버로딩의 특징은 다음과 같습니다.


 ☞ 하나의 클래스 내에서 다른 기능을 가지면서 같은 이름을 가진 메서드입니다.

   . 오버로딩(Overloading)은 같은 이름을 가진 여러 개의 메서드를 말합니다.
   . 다중정의, 중복메서드라고 부르며 일반적으로 오버로딩(Overloading)이라고 합니다.
   . 오버로딩은 클래스의 사용자를 편하게 하기 위해서 사용하는 객체지향의 기법이다.


 ☞ 메서드들의 구별은 메서드의 매개변수의 개수와 매개변수의 형에 의해서 구분됩니다.


 ☞ 리턴타입(Return Type)으로 구별하지 않습니다.


오버로딩을 이용하여 두 수를 합하는 예제 코드를 보도록 하겠습니다.

////////////////////////////////////////////////////////////////////////////////////////////

using System;

public class OverloadCalc

{

// int형 값을 반환함

public int Plus(int a, int b)

{

return (a+b);

}

// float형 값을 반환함

public float Plus(float a , float b)

{

return (a+b);

}

// double형 값을 반환함.

public double Plus(double a, double b)

{

return (a+b);

}

public static void Main()

{

//인스턴트 생성

OverloadCalc oc = new OverloadCalc();

//각각 parameter값을 대입.

int i = oc.Plus(3,5);

float j = oc.Plus(0.1f,0.2f);

double k = oc.Plus(0.5,0.7);

// return 값을 화면에 출력

Console.WriteLine("int : {0}",i);

Console.WriteLine("float : {0}",j);

Console.WriteLine("double : {0}", k);

}

}

////////////////////////////////////////////////////////////////////////////////////////////


위 코드를 실행해 보면 아래와 같은 그림으로 나타날 것입니다. (Ctrl + F5)


사용자 삽입 이미지


위 예제 코드는 같은 이름을 가진 3개의 메소드가 존재합니다.

오버로딩 메소드를 살펴보면 아래와 같습니다.

☞  public int Plus(int a, int b){ }

public float Plus(float a , float b){ }

public double Plus(double a, double b){ }

 

 메서드를 만들 때 메서드의 매개변수 형, 매개변수의 개수 그리고 리턴형이 다르면 메서드의 이름을 다르게 해서 만들어야 겠다고 생각했을 것입니다. 저 또한 오버로드가 몬지 몰랐을땐 그렇게 했었지요. 하지만 그럴필요가 없다는 것입니다.

하나의 메서서드의 이름으로 다양한 매개변수를 받아 들일 수 있는 메서드를 지원하기때문이지요. 이것을 오버로딩(Overloading)이라고 합니다.

 

그럼 컴파일러는 이 3개의 메서드를 어떻게 구분을 할까요!?

이름은 같고 매개변수의 형, 매개변수의 개수 그리고 리턴값이 틀릴 수 있기 때문에 구분할 수 있는 방법은 이세가지 중의 있겠죠. 리턴타입은 각각의 형에 따라 틀려질 수도 있으며 같아 질 수도 있기 때문에 리턴타입으로는 구분하지 않습니다. 그렇다면 남아 있는 것은 매개변수의 형과 매개변수의 개수입니다. 정확하게 내부적으로 사용자가 plus라는 중복메서드를 호출 했을 때 매개변수의 형과 매개변수의

개수로 구분합니다.

 자 그럼 위의 내용의 핵심적인 부분만 요약해 보자면 아래와 같습니다.

 

  ------ 중복메서드를 구분할 때의 규칙 --------

  ★ 매개변수의 개수와 타입이 달라야 한다.

  ★ 매개변수의 개수와 타입 중 하나만 달라도 중복메서드의

     조건으로써 성립 됩니다.

  ★ 메서드의 리턴타입은 중복메서드 구분할 때 사용하지 않습니다.

 

 오버로딩(Overloading)의 개념은 일반 메서드, 생성자메서드, Static메서드에 이르기까지 메서드가 활용되는 곳이면 어디서든 등장합니다. 그러니 Overloading의 개념을 숙지하는 것이 공부하는데 많은 도움이 될지 않을까 싶습니다!

 


참고 서적 : 소설같은 C#

Posted by happydong
, |