Java - 오버로딩

춤추는개발자·2022년 11월 21일
0

Java 정리

목록 보기
6/59

오버로딩

한 클래스 안에 같은 이름의 메서드 여러 개 정의하는 것

오버로딩이 성립하기 위한 조건

  • 메서드 이름이 같아야 한다.
  • 매개변수의 개수 또는 타입이 달라야 한다.
  • 반환 타입은 영향이 없다.

오버로딩의 예제 코드

class MyMath4 {
    int add(int a, int b) {
        System.out.println("int add(int a,int b) 메서드 호출");
        return a + b;
    }
    long add(long a,long b){
        System.out.println("long add(long a,long b) 메서드 호출");
        return a+b;
    }
    int add(int[] a){
        System.out.println("int add(int[] a) 메서드 호출");
        int total = 0 ;
        for (int i=0; i<a.length; i++){
            total+=a[i];
        }
        return total;
    }
}

위의 코드는 add 메서드를 오버로딩한 코드 입니다.

public class JavaExercise_29 { // 오버로딩 실습
    public static void main(String[] args) {
        MyMath4 myMath4 = new MyMath4();
        int result1 = myMath4.add(3,5);
        System.out.println("int add(int a,int b) 메서드의 반환 값 : "+result1);

        long result2 = myMath4.add(3,5L); // long(long a,long b) 메서드 호출
        System.out.println("long add(long a,long b) 메서드의 반환 값 : "+result2);

        long result3 = myMath4.add(3L,5); // long(long a,long b) 메서드 호출
        System.out.println("long add(long a,long b) 메서드의 반환 값 : "+result3);

        long result4 = myMath4.add(3L,5L);
        System.out.println("long add(long a,long b) 메서드의 반환 값 : "+result4);

        int[] a = {1,2,3,4,5};
        int result5 = myMath4.add(a);
        System.out.println("int add(int[] a) 메서드의 반환 값 : "+result5);

    }
}
출력 결과:
int add(int a,int b) 메서드 호출
int add(int a,int b) 메서드의 반환 값 : 8
long add(long a,long b) 메서드 호출
long add(long a,long b) 메서드의 반환 값 : 8
long add(long a,long b) 메서드 호출
long add(long a,long b) 메서드의 반환 값 : 8
long add(long a,long b) 메서드 호출
long add(long a,long b) 메서드의 반환 값 : 8
int add(int[] a) 메서드 호출
int add(int[] a) 메서드의 반환 값 : 15

위의 코드는 인스턴스를 생성하고 각각의 메서드를 호출해 보는 코드와 출력 결과입니다. 결과를 보면 각각의 메서드의 매개변수 타입에 따라서 메서드가 호출되는 것을 확인할 수 있습니다.

0개의 댓글