반응형
728x170
오버로드하면 맨날 스타크래프트가 생각난다.
Overload라서.. 조금 다르지만
그래서 이걸 알아보려고 한다.
왜냐??
맨날 Unity에서 메서드를 사용하면 자꾸 옆에 + overloaded +3 막 이런게 뜬다.
그래서 알아보기로 하였다.
원래 메서드는 유일하게 존재한다. 동일한 것이 존재하면 중복되어 오류가 생긴다.
그러나 Method Overloading이 그것을 피하게 해준다.
피하게 해준다는 뜻이. 중복되는 내용을 써도 된다!
가 아니라 이름만 같을뿐 다른 기능을 한다는 의미로 받아들여야 한다.
예시를 보자
using UnityEngine;
using System.Collections;
public class SomeClass
{
//당연히 더하는 메서드다. 정수를
// 인자로는 정수 2개를 받는다.
public int Add(int num1, int num2)
{
return num1 + num2;
}
//당연히 더하는 메서드다. 문자열을
//인자로는 문자열 2개를 받는다.
public string Add(string str1, string str2)
{
return str1 + str2;
}
}
과연 잘 작동할 것인가??
잘 작동한다.
이는 컴파일러가 알아서 잘 알아먹기 때문인데
using UnityEngine;
using System.Collections;
public class SomeOtherClass : MonoBehaviour
{
void Start ()
{
SomeClass myClass = new SomeClass();
//즉, 어떤 argument(인자)를 전달하느냐에 따라
//우리가 정의한 method들 중에서 정해진다.
myClass.Add (1, 2);
myClass.Add ("Hello ", "World");
}
}
즉, 메서드가 정의되어 있다면 실행할 때
1. 메서드에 전달된 인자를 확인한다.
2. 해당 인자와 일치하는 메서드를 실행한다.
3. 해당 인자가 입력되지 않고 다른 인자가 입력되었으면 에러를 뱉는다.
여기서 Method Overloading의 의미는 무엇이 될 것이냐?
Add니까 Add라 했는데... 중복되어서 이름을 다르게 지어야 하면 어떡하나..
그렇다면 메서드를 Argument에 의존하게 만들자! 해서 overloading이 가능하게 만들었다.
는 내 생각이고.. 아무래도 그랬지 않나 싶다.
메서드의 이름은 기능을 붙여서 만드는데.. 더하는 건 진짜 더하는 거지 뭐 의미가 있나
결국 사용자의 편의성을 위한 것이라고 볼 수 있다.
728x90
반응형
그리드형
'Game Development, 게임개발 > 개발' 카테고리의 다른 글
FSM,유한 상태 기계, Finite State Machines [Unity] (0) | 2021.03.25 |
---|---|
제너릭, Generics [Unity] (0) | 2021.03.24 |
유니티에서 Static이란 [Unity] (0) | 2021.03.23 |
C#에서의 삼항 연산자 Ternary Operator [Unity] (0) | 2021.03.22 |
Linear Interpolation, 선형 보간법 (0) | 2021.03.21 |