JAVA

오버로딩(Overloading)

mukom 2022. 9. 17. 19:07

1. 오버로딩이란?

 

오버로딩은 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 말한다.

'과적한다'라는 의미로 이야기 해보자면, 하나의 메서드 이름에 각기 다른 메서드를 실어 놓는 모양을 연상해보면 쉽게 이해할 수 있다.

 

2. 오버로딩의 조건

 

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

      위에서도 살펴봤듯이 오버로딩은 같은 이름에 과적해야 하기 때문에 식별자인 이름이 같아야 한다는 조건을 가진다.

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

      메서드의 이름이 같은 대신 서로 다른 메서드임을 알려주는 방법이 필요한데, 

      이것이 바로 매개 변수를 활용하는 방법이다.

1. public void add(int a, int b)

2. public void add(int a, double b)

3. public void add(double a, int b)

// 리턴 타입은 오버로딩의 조건과 관련 없음
4. public int add(int a, int b) // 1번 메서드와 같다고 인식함

5. public void add(int a, int b, int c)

// 변수명과 관련 없으며 타입이 중요
6. public void add(int a, int c) // 1번 메서드와 같다고 인식함

 

 

3. 오버로딩의 장점

 

오버로딩이 된 메서드 중 가장 많이 사용하는 메서드는 'println()'이다.

만약 자바에서 오버로딩을 허용하지 않았다면, println에 대하여 각각 다른 이름을 지어줘야 했을 것이다.

또한 근본적으로 같은 기능을 하지만 모두 이름이 제각각 다르다면 해당 메서드에 익숙해지기에도 시간을 더 투자해야 했을 것이다.

메서드의 이름을 통해 해당 메서드가 어떠한 기능을 하지 대략적인 유추가 되기 때문에,

매개변수만 다르고 같은 기능을 하는 메서드는 오버로딩을 통해 기능 유추를 유도할 수도 있다.

이름을 하나만 지어도 된다면, 비교적 이름 짓기에 들이는 수고도 줄어들게 된다는 장점도 있다.