Game Development, 게임개발/개발

Method Overloading, 메서드 오버로딩 [Unity]

게임이 더 좋아 2021. 3. 24. 08:04
반응형
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
반응형
그리드형