[JAVA] 자바 - 메소드 오버로딩 overloading
by mini_min[JAVA]
메소드 오버로딩 overloading
개발자 면접 단골 질문(?) 이라고 불리는 기본 중 기본인 '오버로딩' 개념을 배웠다. over + loading 말 그대로 뛰어넘어(?) 읽는 다는 의미라고 기억하면 편할듯하다.
✔️오버로딩이란?
한 클래스 내에서 이름이 같은 메소드를 정의하는 것으로 성립 조건이 따로 있다.
- 매개변수 타입이 다르거나 매개변수의 개수가 달라야한다.
그래야 매개변수로 구분해서 호출이 가능하지
- 매개변수는 같으나 반환형이 다를 경우 컴파일 오류
- 리턴 타입은 오버로딩 구현에 아무런 영향 ❌
- 생성자도 중복 정의가 가능하다.
❌ 잘못 작성한 것
int add(int a, int b) {...}
int add(int a, int b) {...}
= 매개변수 타입 같고, 개수도 같네 탈.락.
✔️ 오버로딩 예문 (기본자료형)
public void disp(short a) {
System.out.println("short ...");
}
public void disp(int a) {
System.out.println("int ...");
}
public void disp(float a) {
System.out.println("disp...");
}
◾ 매개변수 타입이 모두 다르다!
이때, a 값이 어떤 타입이냐 or 어떤 타입에 더 가깝냐에 따라 출력되는 문장이 다르겠지?
byte a = 10; 의 경우 : short a 매개변수로 들어감
💡 why?
기본 자료형은 매개변수의 타입이 동일한 타입이 존재하지 않으면 큰 자료형 중 가장 가까운 타입을 출력하기 때문!
(당연하게 작은 자료형으로 들어가진 못함)
✔️ 오버로딩 예문 (클래스)
public void disp(Short a) { //대문자 로 시작
System.out.println("Short ...");
}
public void disp(int a) {
System.out.println("int...");
}
// Long 클래스 : long형에 대응하는 클래스
public void disp(Long a) {
System.out.println("Long...");
}
public void sub(Long a) {
System.out.println("Integer...");
}
◾ 대문자로 시작하는 것들 = 클래스
Short 클래스 : short 에 대응하는 클래스다.
long b = 10; 이라고 할 때, long 형을 처리할 메소드는 없다.
이때, Wrapper 클래스의 Long 이 출력된다. 또한, 클래스끼리 형변환 크기 비교는 하지 않는다. (누가 크다 이런거 안따짐)
'Java' 카테고리의 다른 글
[JAVA] 자바 - 생성자 + 객체 생성 순서는? (0) | 2022.07.20 |
---|---|
[JAVA] 자바 - 비정형 인자(Varargs, 가변인수) (0) | 2022.07.19 |
[JAVA] 자바 - 재귀 호출 (0) | 2022.07.19 |
[JAVA] 자바 - call by value / call by reference (0) | 2022.07.19 |
[JAVA] 자바 - 메소드 (유용한 연산) (0) | 2022.07.19 |
블로그의 정보
개발자 미니민의 개발로그
mini_min