오버로딩(overloading)

essential·2023년 5월 25일

객체 지향

목록 보기
13/40

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

void println()

void println(boolean x)

void println(int x)

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

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

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

int add(int x, int y) {return x+y} //오버로딩X

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

long add(int a, int b) {return (long)(a+b);} //오버로딩X

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

long add(long a, int b) {return a+b; } //오버로딩O

class Ex6_10 {
	public static void main(String args[]) {
		MyMath3 mm = new MyMath3();
		System.out.println("mm.add(3, 3) : 결과 :"    + mm.add(3,3));
		System.out.println("mm.add(3L, 3) 결과 : "  + mm.add(3L,3));
		System.out.println("mm.add(3, 3L) 결과: "  + mm.add(3,3L));
		System.out.println("mm.add(3L, 3L) 결과: " + mm.add(3L,3L));

		int[] a = {100, 200, 300};
		System.out.println("mm.add(a) 결과: " + mm.add(a));
   }
}

class MyMath3 {
	int add(int a, int b) {
		System.out.print("int add(int a, int b) - ");
		return a+b;
	}
	
	long add(int a, long b) {
		System.out.print("long add(int a, long b) - ");
		return a+b;
	}
	
	long add(long a, int b) {
		System.out.print("long add(long 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
essential

0개의 댓글