티스토리 뷰

Programming/JAVA

오버로딩(overloading)

new_dev 2020. 12. 6. 20:51
반응형

오버로딩(overloading)

자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도

매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있다.

이처럼, 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을

메서드 오버로딩(method overloadiing) 또는 오버로딩(overloading)이라 한다.

 

 

오버로딩(overloading)의 조건

같은 이름의 메서드를 정의한다고 해서 무조건 오버로딩인 것이 아니다.

 

오버로딩이 되기 위해서는

1. 메서드 이름이 같아야 한다.

2. 매개변수의 개수 또는 타입이 달라야 한다.

 

메서드의 이름이 같아도 매개변수가 다르면 서로 구별될 수 있기 때문에 오버로딩이 가능하다.

위의 조건을 만족하지 못하면 중복 정의로 컴파일 에러가 발생한다.

반환타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.

 

 

오버로딩(overloading) 예시

 

가장 대표적인 예로는 println메서드이다.

println메서드를 호출할 때 매개변수로 지정하는 값의 타입에 따라서 호출되는 println메서드가 달라진다.

 

//예시
println()
println(int x)
println(long x)
println(boolean b)
//등등등

 

 

 

 

오버로딩이 성립하지 않을 때

 

밑에 1번과 2번 메서드는 오버로딩이 성립하지 않는다.

매개변수의 이름만 다를 뿐 매개변수의 타입은 같기 때문이다.

 

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


//2번
int add(int x, int y){
	return x+y;
}

 

 

 

리턴 타입이 다를 경우도 오버로딩으로 성립하지 않는다.

 

//1번
int add(int x , int y){
	return x+y;
}



//2번
double add(int x, int y){
	return (double)(x+y);
}

 

 

 

 

 

반응형
댓글