오버로딩 (Overloading)

멍빼미·2024년 2월 29일

오버로딩 (Overloading)

오버로딩이란 한 클래스 내에서 같은 이름의 메서드를 다수 정의하는 것이다.

오버로딩의 조건

  1. 메서드 이름이 같아야 한다.
  2. 매개변수의 개수 혹은 타입이 달라야 한다.
  3. 반환 타입은 관계없다.

메서드의 이름이 같아도 매개변수가 다르면 구별이 가능하다.

잘못된 코드

class Num {
     int add (int a, int b) {
         return a + b;
     }

     int add(int a, int b) {
         return a - b;
     }
}

메서드의 이름은 같지만 매개변수의 개수와 타입이 모두 같기 때문에 컴파일 에러가 난다.

java: method add(int,int) is already defined in class Num

add라는 메서드가 이미 Num 클래스에 정의되어 있다는 설명이다.

올바른 예시

class Num {
     int add(int a, int b) {
         return a + b;
     }

     long add(long a, int b) {
         return a - b;
     }
     
     int add(int a, int b, int c) {
         return a + b + c;
    }
}

두 번째 add 메서드는 long타입 매개변수로 타입이 다른 매개변수가 있다.
세 번째 add 메서드는 매개변수의 개수가 3개로 개수가 중복되지 않는다.
위의 경우에는 오버로딩이 적용되어 컴파일 에러가 나타나지 않는다.

전체 코드

public class Main {
    public static void main(String[] args) {

        Num num = new Num();

        System.out.println(num.add(1, 2));
        System.out.println(num.add(1L, 2));
        System.out.println(num.add(1, 2, 3));
    }
}

class Num {
    int add(int a, int b) {
        return a + b;
    }

    long add(long a, int b) {
        return a - b;
    }

    int add(int a, int b, int c) {
        return a + b + c;
    }
}

결과 값

3
-1
6
profile
멍한 올빼미

0개의 댓글