오버로딩(Overloading)

KKH_94·2023년 6월 8일

JAVA

목록 보기
21/36

자바에서 메서드 오버로딩(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(inta,intb)sum(int a, int b) 메서드

  • 실수형 매개변수 두 개를 받아 합을 계산하는 sum(doublea,doubleb)sum(double a, double b) 메서드

  • 정수형 매개변수 두 개를 받아 합을 계산하는 sum(longa,longb)sum(long a, long b) 메서드

  • 정수형 매개변수 세 개를 받아 합을 계산하는 sum(inta,intb,intc)sum(int a, int b, int c) 메서드

각각의 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 클래스

profile
_serendipity

0개의 댓글