
Overload
메서드 오버로드는 하나의 클래스 내에서 같은 이름을 가진 메서드를 여러 개 정의하는 것
매개변수의 개수가 다르면 같은 이름이라도 다른 메서드로 인식
DisplayValue(int value)와 DisplayValue(float value)처럼
매개변수의 자료형(정수, 실수, 문자열 등)이 다르면 오버로딩이 가능
매개변수의 타입은 같더라도 그 순서가 다르면 다른 메서드로 간주
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만 기억하면 되고,
어떤 타입의 값을 넘길지는 코드에서 자동으로 파악.
유지보수 및 확장성:
새로운 타입의 데이터나 새로운 개수의 매개변수를 처리해야 할 때,
기존 메서드 이름을 그대로 사용하면서 새로운 오버로드만 추가.
기존 코드를 수정할 필요가 없으므로 안정성이 높아지고, 코드 변경에 따른 위험이 줄어듦.
편의성:
사용자는 메서드를 호출할 때 매개변수의 타입이나 개수에 따라 자동으로 적절한 메서드가 선택되므로,
명시적으로 다른 이름의 메서드를 호출할 필요가 없어 코딩이 더 편리.