이전 글에서는 입력매개변수가 기본 자료형이었다. 이번엔 참조 자료형이 입력매개변수로 오는 경우다. 아래 오류가 발생하는 이유는 배열에서 공부했던 내용을 기억한다면 알 수 있다.
기본 자료형 입력매개변수와 참조 자료형 입력매개변수의 차이
배열과 같은 참조 자료형이 입력 매개변수로 넘겨질 때 실제 객체가 전달되는 것이 아니라 객체의 위칫값이 전달된다. 이 때, 전달은 복사의 개념이다. 이는 스택 메모리에 있는 값이 전달되기 때문인데, 기본 자료형은 스택 메모리에 실제 값을 저장하지만 참조 자료형의 실제 값은 힙 메모리에 있고 힙 메모리의 주소가 스택 메모리에 저장된다.
오버로딩된 메서드
메서드 오버로딩을 이해하기 위해서는 메서드 시그니처method signature를 먼저 알아야한다. 메서드 시그니처는 메서드명과 입력매개변수의 자료형을 말한다. 시그니처(서명)라는 말에서 유추할 수 있듯이 메서드를 구분하는 기준으로 사용된다. 자바 가상 머신은 메서드 시그니처가 다르면 메서드명이 동일해도 다른 메서드로 인식한다. 메서드 오버로딩method overloading은 이러한 특징을 이용한 것으로, 입력매개변수의 개수나 자료형이 다른 여러 개의 동일한 이름을 지닌 메서드를 같은 공간에 정의하는 것을 말한다. 즉, 입력매개변수의 개수와 자료형으로 메서드를 구분해주면 된다. 참고로 리턴 타입이 시그니처에 들어가지 않는 이유는 메서드를 호출할 때 리턴 타입은 명시하지 않기 때문이다.
가변 길이 배열 입력매개변수 메서드
리턴타입 메서드명 (자료형... 참조변수명) { 메서드 내용 } |
자료형 다음에 말줄임표(...)가 있는 것이 특징이다. 가변 길이 배열 입력매개변수를 사용하면 단 1개의 메서드로 여러 개의 오버로딩된 메서드를 대체할 수 있다.
'development > Java' 카테고리의 다른 글
JAVA 공부 해볼까 (12) (0) | 2021.12.24 |
---|---|
JAVA 공부 해볼까 (11) (0) | 2021.12.20 |
JAVA 공부 해볼까 (10) (6) | 2021.12.18 |
JAVA 공부 해볼까 (9) (0) | 2021.12.16 |
JAVA 공부 해볼까 (8) (4) | 2021.12.14 |