Language/Java

오버로딩(overloading)

지팡구 2022. 1. 20. 23:01

자바에서는 메서드도 변수와 마찬가지로 같은 클래스 내에 서로 구분이 가능해야한다.

(그럼 계속해서 이름을 다르게 사용해야하나?)

 

정답은 그렇지 않다. 같은 이름이라도 매개변수의 개수, 타입이 다르면 같은 이름을 사용해 메서드를 정의할 수 있다.

 

이렇게, 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '오버로딩'이라고 한다(중복 메서드)

 

 
예시

보면 한 클래스 내에 같은 이름으로 3개의 getInfo가 정의된 것을 볼 수 있는데, 각자 변수의 개수 및 타입이 다르다.

이렇게 오버로딩의 조건은 크게 2가지이다

 

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

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

 

그럼 오버로딩의 장점은 무엇일까?

생각을 해보자. 오버로딩? 우선 효율적일 것이다. 굳이 여러 개의 메서드를 구현하지 않아도 매개변수의 타입과 개수를 다르게 하면 구현이 가능하고, 이로인해 같은 기능을 하는 메서드를 하나의 이름으로 사용할 수 있으며, 메서드의 이름을 절약할 수 있다. (개발자 최대의 고민거리=이름짓기)