topic난이도 · 약 12

오버로딩(Overloading)

같은 이름의 메서드를 매개변수 목록이 다르게 여러 개 정의하는 것.

#Java#메서드#컴파일타임
왜 배우는가

오버라이딩(Overriding)과 철자가 비슷해 실기 단답형에서 자주 혼동된다. '같은 클래스 내 + 시그니처만 다름 = 오버로딩'으로 외운다.

오버로딩은 컴파일 타임에 매개변수 타입·개수·순서로 구별된다. 반환 타입만 다른 건 오버로딩이 아니다(컴파일 에러).

java
class Calc {
    int add(int a, int b) { return a + b; }
    double add(double a, double b) { return a + b; }
    int add(int a, int b, int c) { return a + b + c; }
}

Calc c = new Calc();
c.add(1, 2);        // 첫 번째
c.add(1.5, 2.5);    // 두 번째
c.add(1, 2, 3);     // 세 번째
실기 드릴 1문항
edit실기 드릴 · 단답형

메서드 이름은 같으나 매개변수의 타입·개수·순서가 다르게 여러 개 정의하는 것을 무엇이라 하는가?