8월 26일 TIL, 항해 13일차

코코·2023년 8월 27일
0

TIL(Today I Learned)

목록 보기
14/19
post-thumbnail

오버로딩

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

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

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

2. 오버로딩과 메서드 중복정의는 다르다!

  • 예시
int add(int x, int b) { return a+b; }
int add(int x, int y) { return x+y; }

// 메서드 이름은 같으나 매개변수의 갯수와 타입이 같기 때문에 오버로딩 아님


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

// 반환타입은 다르지만 어차피 영향이 없고, 메서드 이름은 같지만 매개변수
// 이름과 타입이 모두 같기에 오버로딩 아님


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

// 메서드 이름이 같고 매개변수의 타입이 다르기 때문에 오버로딩 성립!!

3. 오버로딩의 올바른 예

매개변수는 다르지만 같은 의미의 기능 수행

class MyMath3 {
	int add(int a, int b) {
    	System.out.print("int add(int a, int b) - ");
        return a+b;
    }
    
    long add(long a, long b) {
    	System.out.print("long add(long a, long b) - ");
        return a+b;
    }
    
    int add(int[] a) {		// 배열의 모든 요소의 합을 결과로 돌려준다.
    	System.out.print("int add(int[] a) - ");
        int result = 0;
        for(int i = 0; i < a.length; i++)
        	result += a[i];
         
         return result;
    }
}
profile
Just Do It

0개의 댓글