Java

객체(Object) - 오버로딩(Overloading)

제주니어 2022. 8. 23. 22:00

오버로딩(Overloading)

1. 오버로딩이란?

메소드 오버로딩

  • 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것을 메소드 오버로딩(Overloading)이라고 한다.
  • 메소드 오버로딩을 통해서 매개값을 다양하게 받아서 필요한 처리할 수 있다.
  • 메소드 오버로딩의 조건은 매개 변수의 타입, 개수, 순서 중 하나가 달라야 한다.
  • 매개 변수 이름만 바꾸는 것은 메소드 오버로딩이 아니다. 또한 리턴 타입만 다르고 매개 변수가 동일한 것도 메소드 오버로딩이 아니다.
// 오버로딩의 대표적인 예시
System.out.println(1);
System.out.println(false);
System.out.println('A');
System.out.println("Hello World!");

2. 오버로딩의 조건

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

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

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

long add(int a, long b) {return a+b;}
long add(long a, int b) {return a+b;}

3. 오버로딩의 장점

  • 메서드의 이름을 기억하기 쉽고 이름을 짧게 할 수 있어 오류의 가능성을 줄일 수 있다.
  • 메서드의 이름을 절약할 수 있다.

4. 가변인자(varargs)와 오버로딩

가변인자 (varargs)

  • ‘타입 변수명’과 같은 형식으로 선언하며 printf()가 대표적인 예이다.
  • 내부적으로 배열을 이용하는 것이다.
  • 매개변수의 타입을 배열로 하면 반드시 인자를 지정해 줘야 한다.
  • concatenate메서드 : 매개변수로 입력된 문자열에 구분자를 사이에 포함해 반환.
  • 가변인자를 선언한 메서드를 오버로딩하면 메서드 호출시 구별되지 못하는 경우가 있으므로 가변인자를 사용한 메서드는 오버로딩하지 않는다.

'Java' 카테고리의 다른 글

객체(Object) - 변수의 초기화  (0) 2022.08.24
객체(Object) - 생성자(Constructor)  (0) 2022.08.24
객체(Object) - 변수와 메서드  (0) 2022.08.23
객체(Object) - 클래스와 객체  (0) 2022.08.22
객체(Object) - 객체 지향 언어  (0) 2022.08.22