Day13 - 오버로딩

2021. 3. 4. 11:07JAVA 공부

오늘은 목요일 이네요 ~

대면 수업 하는 날인데, 오늘만 지나면 내일 비대면 수업하고 주말 잉ㅇㅇㅇㅇㅇㅇㅇㅇ에요

좋ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ아요

 

이번에는 오버로딩에 대해서 알아 봅시다

오버로딩

오버로드는 이렇게 많이 주다 지나치게 많다. 등등의 뜻이 있는데요

 

프로그래밍에서 오버로딩은 , 똑같은 메서드(함수)를 만드는 것을 의미 합니다.

저희는 이미 이 오버로딩 이라는 기능을 한번 본 적이 있어요

이름이 같은 메서드가 뭐가 있었죠? 생성자가 있었죠 ~

※ 오버라이딩 과는 좀 다릅니다.

 

생성자를 생각해 보면, 이름은 똑같고 생성자에 들어가는 매개변수가 달랐어요

먼저 오버로딩의 규칙에 대해서 보고 갑시다.

1. 이름이 같다.

2. 반환 유형은 영향을 미치지 않는다.

3. 매개변수의 타입 or 개수 or 순서 가 다르면 된다.

 

예제를 한번 봅시다.

input 이라는 이름을 가진 메서드를 여러 개 만들어 줄겁니다.

2번째 만든 input은 이름과 매개변수가 같은데, 반환유형이 다르죠?

2번 규칙 . 반환 유형은 영향을 미치지 않는다. 를 생각해 봅시다.

이건, 사용하는 과정을 생각해 보면 되는데

1번째 input 사용(호출) -> input(1);

2번째 input 사용(호출) -> input(1);

보시면, 사용하는 코드가 똑같아요 그래서 1번째 만든 input을 원하는건지 2번째 만든 input을 원하는건지 구분을 할 수가 없기 때문에, 반환유형만 다른 메서드는 만들 수 없습니다.

하지만, 이렇게 매개변수의 데이터 유형이 달라지는 건 가능 합니다.

매개변수의 개수가 늘어도 가능 하죠?

이 순서를 반대로 해볼까요?

순서를 변경만 해도 가능 하네요?

이런 식으로 ... 만든 input 을 메인클래스에서 사용 해봅시다.

먼저, 만든 클래스를 사용하기 위해서 인스턴스화(객체화)를 해주고

int형 정수 1개를 매개변수로 받는 input 입니다

String형 문자열 1개를 매개변수로 받는 input 입니다

int형 정수 1개, double형 실수 1개를 매개변수로 받는 input 입니다

double형 실수 1개, int형 정수 1개를 매개변수로 받는 input 입니다

char형 문자 1개, int형 정수 1개, double형 실수 1개를 매개변수로 받는 input 입니다.

 

이렇게 이름은 같고, 매개변수는 다르게 해서 사용할 수 있다는 걸 확인 할 수 있습니다.

이러한 기능을 오버로딩 이라고 합니다

 

오버라이딩 vs 오버로딩

오버라이딩은 상속받은 부모클래스에 정의 된 메서드를 자식 클래스에서 다시 정의하는 것

 

오버로딩은 이름만 같고, 매개변수는 다른 메서드를 만드는 것

 

자 그러면, 저희가 왜 오버로딩 이라는 걸 알아야 하는가....

저희가 이미 쓰던 메서드 Arrays.toString을 보면, 이름은 같은데 매개변수가 다 다르죠?

이런 것처럼 이미 java에서 쓰라고 정의되어 있는 메서드 들이 오버로딩 으로 만들었기 때문입니다.

그래서 이것 처럼 이미 정의된 메서드를 사용할 때, 아 오버로딩 된거구나 라고 생각하시면 되겠습니다.

 

이렇게 오버로딩에 대해 알아 보았습니다.

 

고생하셨습니다

'JAVA 공부' 카테고리의 다른 글

Day13 - super  (0) 2021.03.04
Day13 - this  (0) 2021.03.04
Day12 - 오버라이딩  (0) 2021.03.04
Day12 - 클래스의 상속  (0) 2021.03.03
Day12 - 변수의 기본타입과 참조타입  (0) 2021.03.03