16-1) 오버 로딩이란?
한 클래스 안에 같은 이름의 메서드 여러 개를 정의하는 것(메서드:메서드 이름=n:1)
overloading:과적하다
대표적인 예로 println을 들 수 있습니다.
void println()
void println(boolean x)
void println(char x)
void println(char [] x)
등등..
16-2) 오버 로딩이 성립하기 위한 조건
①메서드 이름이 같아야 한다.
②매개변수의 개수 or 타입이 달라야 한다.
③반환 타입은 영향 없다.
<예시 1>
① 메서드 이름 같음
② 개수는 같으니 타입이 달라야 하는데 int로 타입도 똑같음(오류)
③ 반환 타입 상관없음
<예시 2>
① 메서드 이름 같음
② 개수는 같으니 타입이 달라야 하는데 int로 타입도 똑같음(오류)
③ 반환 타입 상관없음(하나는 int/하나는 long이든 상관없음)
<예시 3>
① 메서드 이름 같음
② 개수는 같으니 타입이 달라야 하는데 타입이 다름
③ 반환타입 상관없음
->오버로딩 성립!
잠깐!!!!
add(3,3L)을 호출하면 윗줄이 호출되겠죠.
그럼 add(3,3)을 호출하면 윗줄이 호출될까요? 아랫줄이 호출될까요?
둘 다 되잖아요. 그래서 오류가 납니다. 그걸 'ambiguous(모호한)하다'라고 합니다.
에러 메시지: 'The method add(int, long) is ambiguous for the type...'
<정리 퀴즈>
1. 오버로딩이란?
같은 이름의 메서드를 여러 개 정의하는 것
2. 오버로딩이 성립하기 위한 세 가지 조건
타입 상관 x, 같은 이름의 메서드, 매개변수의 개수가 다르거나 타입이 다르거나
*유튜브 남궁성 선생님의 `자바의 정석`을 참고하여 만들었습니다*
*자세히 보고 싶은 분들은 유튜브 가서 보시면 됩니다*
'back-end > JAVA' 카테고리의 다른 글
18) 객체지향-생성자 this(), 참조변수 this (0) | 2021.05.25 |
---|---|
17) 객체지향-생성자(constructor)와 기본생성자(default constructor) (0) | 2021.05.25 |
15)객체지향-static메서드와 인스턴스 메서드(클래스 메서드)/static method and instance method(class method) (0) | 2021.05.20 |
14)객체지향-참조형 매개변수(ReferenceParameter), 참조형 반환타입(Reference Return Type) (0) | 2021.05.19 |
13)객체지향-기본형 매개변수(Primitive Parameter) (0) | 2021.05.18 |