Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

DeFacto-Standard IT

[Java] Method Overloading, Method Signature, Method Type 본문

Java/Basic

[Java] Method Overloading, Method Signature, Method Type

defacto standard 2017. 9. 19. 19:48

Overloading

한 클래스 내에서, 같은 이름의 메서드를 사용하지만 매개변수의 개수 또는 타입이 다른 경우이다.

Method Signature가 서로 다른 메서드를 정의해야 하며, Method Signature가 같다면 컴파일 오류가 난다.


Method Signature는 메서드를 구분하는 기준이다.


 

오버로딩의 조건

1. 메서드 이름이 같다.

2. 매개변수의 갯수 또는 타입 또는 순서가 달라야 한다.

   - 매개변수의 갯수, 타입이 같더라도 순서가 다르면 오버로딩이 가능하다.

   - 매개변수의 갯수, 타입, 순서가 같은 상황에서 매개변수의 이름이 다르다고 오버로딩이 되는 것은 아니다.

 

위 2개 조건을 Method Signature라고 한다. 즉, 오버로딩은 함수명이 같지만 Method Signature가 다른 메서드만 적용 가능하다.


* 참고 1 : 리턴타입(Method Type)은 오버로딩 구현과 관계가 없다.

String hello(int id) { ... }

int hello(int id) { ... }

는 컴파일 오류가 난다.


* 참고 2

long add(int a, long b) {...}

long add(long b, int a) {...} 와 같은 메서드 2개가 있다고 할 때, 호출 시에는 add(3, 3L) 또는 add(3L, 3)과 같이 호출해야 하며 add(3,3)으로는 호출할 수 없다.

 

* 참고 3

public, private 와 같은 접근제어자는 오버로딩 구현과 관계가 없다.

public String hello(int id) { ... }

private int hello(int id) { ... }

는 컴파일 오류가 난다.

 

오버로딩 장점

똑같은 동작을 하는데, 매개변수가 다르다는 이유 하나만으로 여러 개의 메서드를 작성해야 하고 이름을 일일이 숙지하고 있어야 하는 상황을 면할 수 있다.



Comments