JAVA 오버로딩

Dev.Shinny·2022년 9월 22일
0

자바의 정석

목록 보기
8/18

오버로딩이란?

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

오버로딩의 조건

  1. 메서드 이름이 같아야 한다.
  2. 매개변수의 개수 또는 타입이 달라야 한다.

오버로딩된 메서드들은 매개변수에 의해서만 구별될 수 있으므로 반환 타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.

(1)
int add(int a, int b);
int add(int x, int y);
(2)
int add(int a, int b) {return a+b;}
long add(int a, int b) {return (long)(a+b);}
(3)
long add(int a, long b) {return a+b;}
long add(long a, int b) {return a+b;}

(1)번의 경우 매개변수의 변수명만 다를 뿐 매개변수 타입이 같기 때문에 오버로딩이 성립하지 않는다.

(2)번은 반환 타입만 다를 뿐, 매개 변수 타입과 개수가 일치하기 때문에 어떤 메서드가 호출될 것인지 결정할 수 없어 오버로딩으로 간주되지 않는다.

(3)번은 long, int형 매개변수가 각 하나씩 선언되어 있지만, 호출 시 매개변수 값에 의해 구분될 수 있으므로 오버로딩에 해당한다.

오버로딩의 장점

만일 메서드도 변수처럼 단지 이름만으로 구별된다면, 한 클래스내 모든 메서드들은 이름이 달라야 한다. 같은 기능을 하는 메서드라도, 서로 다른 이름을 가져야 하기 때문에 메서드를 작성하는 것이 번거롭고 사용하는 쪽도 일일이 구분해서 기억해야하기 때문에 부담이 된다.

하지만 오버로딩을 통해 println 메서드처럼 하나의 이름으로 정의될 수 있고 더 많은 오류의 가능성을 줄이고 기억하기 쉬워진다.

profile
Hello I'm Shinny. A developer who try to enjoy the challenge.

0개의 댓글