Java 오버로드에 대한 이해

박현우·2024년 1월 2일

1. 오버로드
1-1. 메서드 오버로드(overload)

  • 원칙적으로는 하나의 클래스 안에서는 동일한 이름의 메서드가 두 개 이상 존재할 수 없지만, 이를 가능하게 하는 예외적인 처리 기법

1-2. 이름이 동일한 매서드를 정의하기 위한 조건

  • 메서드간의 파라미터가 서로 달라야 한다.
    -> 파라미터의 데이터 타입이 다르다.
    (데이터 형이 동일하고 변수의 이름이 다른 경우는 동일한 파라미터로 인식된다)
    -> 파라미터의 개수가 다르다
    -> 서로 다른 데이터형을 갖는 파라미터들의 전달 순서가 다르다.

  • 리턴형이 다른 경우는 오버로드의 성립에 아무런 영향을 주지 않는다.

1-3. 오버로드의 예시

  • 파라미터의 데이터형이 서로 다르기 때문에 오버로드 성립

    	public void plus(int a){...}
    	public void plus(boolean b){...}
  • 파라미터의 개수가 서로 다르기 때문에 오버로드 성립

    	public void user(int a){...}
    	public void user(int a, int b)}{...}
  • 데이터형의 전달 순서가 서로 다르기 때문에 오버로드 성립

    	public void user(int a, boolean b){...}
    	public void user(boolean a, int b){...}
  • 아래는 오버로드 성립 안함

    	plus(int a, int b){...}
    	plus(int b, int a){...}
  • 아래는 오버로드 성립함

    	plus(int a, String b, int c){}
    	plus(int a, int c, String b){}
  • 아래는 오버로드 성립함

    	plus(int a){...}
    	plus(int a, int b){...}

1-4. 오버로드의 예시

  • System.out.println();
  • 오버로드는 하나의 메서드를 호출할 수 있는 모든 경우의 수를 미리 준비해놓음으로써, 메서드를 만드는 측은 번거로울 수 있지만, 메서드를 호출하는 측은 데이터 타입을 신경쓰지 않고 편리하게 사용할 수 있게 하기 위함이다.

1-5. 생성자의 overload

  • 생성자 역시 메서드의 한 종류이므로 오버로드가 가능하다.
  • 생성자를 overload할 경우, 해당 클래스에 대해 "객체를 생성하는 방법"을 다양하게 준비할 수 있게 된다.

1-6. this 키워드를 사용한 생성자 overload

  • this 키워드의 용법
    -> 매서드처럼 사용할 경우, 현재 클래스의 다른 생성자를 의미한다.

  • this 키워드를 사용하여 생성자 overload를 간결하게 처리학기
    -> 파라미터가 서로 다른 생성자들이 하나의 완전한 생성자를 호출하도록 하여 데이터의 초기화를 한 곳에서 일괄적으로 처리하도록 구현할 수 있다.

0개의 댓글