자바를 잡아라

[JAVA] 메서드 오버로딩(overloading)

presnt__lee 2023. 7. 4. 15:26
반응형

메서드도 변수와 같이 같은 클래스 내에서 서로 구별될 수 있어야 하기 떄문에 각기 다른 이름을 가져야 한다.

그러나, 자바네서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있다.

 

즉, 한 클래스 내에 "같은 이름의 메서드"를 여러개 정의하는 것을  '메서드 오버로딩' 또는 간단히 '오버로딩'이라고 한다. 

 

[왜?]

매개변수는 다르지만 의미상 같은 작업을 수행하는 경우 매서드의 오버로딩을 사용한다. 

이를 통해, 코드를 의미상으로 간결하게 만들고, 사용자가 코드를 이해하기 더욱 쉬울 것이라 생각된다. 오버로딩이  자바에서 지원되지 않을경우, 아마 사용자는 매서드의 이름을 하나하나 다르게 하지만, 관리하기 용의하게 네이밍하는데 많은 시간을 소비해야 할지도 모른다. 

 

 

[성립조건]

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

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

3. 반환 타입은 관계 없다. 

 

[작동원리]

같은 이름의 메서드 일때, 매개변수와 자동매칭되어 해당 메서드를 호출한다. 

int add(int a, int b) {returen a+b};
int add(int x, int y) {returen x+y};
 // 매개변수의 개수도 같고, 타입도 같기때문에, 오버로딩 조건 성립 x
 
 int add(int a, int b){return a+b};
 long add(int a, int b){return (long)(a+b);}
 // 반환타입은 고려하지 않는다ㅣ.
 
 
 long add(int a, long b){return a+b};
 long add(long a, int b){return a+b};
 
 //매개변수는 같지만, 타입이 다르기 떄문에 오버로딩 조건 성립 o

 

 

 

 

 

 

반응형

'자바를 잡아라' 카테고리의 다른 글

[JAVA] chapter 3 연산자  (0) 2023.08.08
[JAVA] chapter2 변수  (0) 2023.08.07
[JAVA][객체2] 상속/포함관계  (0) 2023.07.05
[JAVA] 변수의 초기화  (0) 2023.07.05
[JAVA] 생성자/ This  (0) 2023.07.04