68.내일배움캠프 60일차 TIL <Unity Unity 2D 팀프로젝트- MartialGod:Reborn - 9일차> 07/03

정광훈(Unity_9기)·2025년 7월 3일

TIL (Today I Learned)

목록 보기
69/110
post-thumbnail

Overload

메서드 오버로드는 하나의 클래스 내에서 같은 이름을 가진 메서드를 여러 개 정의하는 것

  1. 매개변수의 개수가 다르면 같은 이름이라도 다른 메서드로 인식

  2. DisplayValue(int value)와 DisplayValue(float value)처럼
    매개변수의 자료형(정수, 실수, 문자열 등)이 다르면 오버로딩이 가능

  3. 매개변수의 타입은 같더라도 그 순서가 다르면 다른 메서드로 간주


<예시 코드>

using UnityEngine; // 유니티 엔진 기능을 사용하기 위해 필요

public class OverloadExample : MonoBehaviour
{
    // --- 1. 매개변수 타입이 다른 오버로드 ---
    // 정수(int) 하나를 받아서 출력하는 메서드
    public void DisplayValue(int value)
    {
        Debug.Log("정수 값: " + value);
    }

    // 실수(float) 하나를 받아서 출력하는 메서드
    public void DisplayValue(float value)
    {
        Debug.Log("실수 값: " + value);
    }

    // 문자열(string) 하나를 받아서 출력하는 메서드
    public void DisplayValue(string message)
    {
        Debug.Log("메시지: " + message);
    }

    // --- 2. 매개변수 개수가 다른 오버로드 ---
    // 정수 두 개를 받아서 합을 출력하는 메서드
    public void CalculateSum(int num1, int num2)
    {
        Debug.Log("두 정수의 합: " + (num1 + num2));
    }

    // 정수 세 개를 받아서 합을 출력하는 메서드
    public void CalculateSum(int num1, int num2, int num3)
    {
        Debug.Log("세 정수의 합: " + (num1 + num2 + num3));
    }

    // --- 3. 매개변수 타입과 개수가 모두 다른 오버로드 ---
    // 이름과 나이를 받아서 출력
    public void ShowInfo(string name, int age)
    {
        Debug.Log($"이름: {name}, 나이: {age}");
    }

    // 이름, 나이, 직업을 받아서 출력
    public void ShowInfo(string name, int age, string job)
    {
        Debug.Log($"이름: {name}, 나이: {age}, 직업: {job}");
    }

    // 유니티에서 스크립트가 시작될 때 자동으로 호출되는 메서드
    void Start()
    {
        Debug.Log("--- DisplayValue 오버로드 호출 ---");
        DisplayValue(123);           // 정수 오버로드 호출
        DisplayValue(45.67f);        // 실수 오버로드 호출
        DisplayValue("Hello Overload!"); // 문자열 오버로드 호출

        Debug.Log("\n--- CalculateSum 오버로드 호출 ---");
        CalculateSum(10, 20);        // 두 정수 합 오버로드 호출
        CalculateSum(5, 10, 15);     // 세 정수 합 오버로드 호출

        Debug.Log("\n--- ShowInfo 오버로드 호출 ---");
        ShowInfo("김철수", 30);      // 이름, 나이 오버로드 호출
        ShowInfo("이영희", 25, "개발자"); // 이름, 나이, 직업 오버로드 호출
    }
}

가독성 및 직관성 향상:

DisplayValue처럼 특정 '행위'를 나타내는 이름 하나로 다양한 타입의 데이터를 처리.

개발자는 "값을 보여준다"는 의도로 DisplayValue만 기억하면 되고,
어떤 타입의 값을 넘길지는 코드에서 자동으로 파악.

유지보수 및 확장성:

새로운 타입의 데이터나 새로운 개수의 매개변수를 처리해야 할 때,
기존 메서드 이름을 그대로 사용하면서 새로운 오버로드만 추가.

기존 코드를 수정할 필요가 없으므로 안정성이 높아지고, 코드 변경에 따른 위험이 줄어듦.

편의성:

사용자는 메서드를 호출할 때 매개변수의 타입이나 개수에 따라 자동으로 적절한 메서드가 선택되므로,
명시적으로 다른 이름의 메서드를 호출할 필요가 없어 코딩이 더 편리.

0개의 댓글