자바에서 메서드 오버로딩(overloading)은 동일한 이름을 가지지만 매개변수의 타입, 개수, 순서가 다른 여러 메서드를 선언하는 것을 말합니다.
이를 통해 동일한 작업을 수행하는 메서드들을 하나의 이름으로 그룹화하고, 다양한 매개변수를 처리할 수 있게 됩니다. 다음은 메서드 오버로딩에 대한 설명과 함께 샘플 코드를 제시합니다:
public class Calculator {
public static void main(String[] args) {
Calculator calculator = new Calculator();
int sumOfIntegers = calculator.sum(3, 5);
System.out.println("Sum of integers: " + sumOfIntegers);
double sumOfDoubles = calculator.sum(2.5, 4.7);
System.out.println("Sum of doubles: " + sumOfDoubles);
long sumOfLongs = calculator.sum(100L, 200L);
System.out.println("Sum of longs: " + sumOfLongs);
int sumOfThreeIntegers = calculator.sum(2, 4, 6);
System.out.println("Sum of three integers: " + sumOfThreeIntegers);
}
public int sum(int a, int b) {
System.out.println("Calling int sum(int a, int b)");
return a + b;
}
public double sum(double a, double b) {
System.out.println("Calling double sum(double a, double b)");
return a + b;
}
public long sum(long a, long b) {
System.out.println("Calling long sum(long a, long b)");
return a + b;
}
public int sum(int a, int b, int c) {
System.out.println("Calling int sum(int a, int b, int c)");
return a + b + c;
}
}
이 코드에서 Calculator 클래스는 main 메서드를 가지고 있습니다.
main 메서드에서는 Calculator 객체를 생성하고, 다양한 타입의 값을 매개변수로 전달하여 오버로딩된 sum 메서드를 호출합니다.
sum 메서드는 매개변수의 타입과 개수에 따라 다양한 시그니처를 가집니다.
정수형 매개변수 두 개를 받아 합을 계산하는 메서드
실수형 매개변수 두 개를 받아 합을 계산하는 메서드
정수형 매개변수 두 개를 받아 합을 계산하는 메서드
정수형 매개변수 세 개를 받아 합을 계산하는 메서드
각각의 sum 메서드는 매개변수 타입에 따라 호출될 때 적절한 메서드가 실행되며, 각각의 메서드 내부에는 호출된 것을 확인하기 위한 출력문이 있습니다.
Calling int sum(int a, int b)
Sum of integers: 8
Calling double sum(double a, double b)
Sum of doubles: 7.2
Calling long sum(long a, long b)
Sum of longs: 300
Calling int sum(int a, int b, int c)
Sum of three integers: 12
메서드 오버로딩을 사용하면 동일한 작업을 수행하는 메서드들을 하나의 이름으로 그룹화할 수 있으며, 매개변수의 타입과 개수에 따라 다양한 시나리오를 처리할 수 있습니다.
이는 코드의 가독성과 유지 보수성을 향상시키는 데 도움이 됩니다.
하지만 String 클래스는...매우 대접받는 String 클래스