본문으로 바로가기

[Java] 오버로딩 (OverLoading)

category Language/Java-backup 2022. 4. 3. 04:27
728x90
반응형
 
오버로딩, OverLoading
오버로딩이란 메소드 이름을 동일하게 하면서 매개변수 값을 다르게 주어 여러개의 메소드를 구현할 수 있는 것입니다. 
 
왜 쓸까?
절차지향에서는 기능별로 메소드를 따로따로 만들어야 합니다. 만약 정수형 값을 인자로 받는 함수는 정수형 값만 리턴시키고 실수형 값을 인자로 받는 함수는 실수형 값만 리턴시킵니다. 이를 보완하기 위해 객체지향에서는 매개변수의 타입이 각각 달라도 동일한 이름의 메소드를 갖게 만든다면 메소드를 구현할 때 매개변수의 값만 다르게 설정해서 메소드를 호출하면 그 메소드를 만든 정의대로 기능을 쓸 수 있습니다.
 
코드를 통한 오버로딩의 이해
오버로딩의 이해를 돕기 위해 아래의 코드와 같은 기준이 되는 메소드 하나를 만들어봅시다. 이 메소드의 보자면 반환값 int형이며 int형 Parameter 3개를 인자로 받고 인자로 받은 3개의 매개변수를 더해서 반환합니다. 
 

앞서 언급했듯 오버로딩의 특징은 메소드의 이름은 같고 인자로 받는 데이터 타입이 다르다는 것입니다. 그래서 다음과 같은 오버로딩이 가능합니다. 아래의 코드는 위의 코드에서 가운데 매개변수의 데이터 타입만 float 형으로 바꿔졌습니다.  즉, 매개변수의 갯수가 같고 데이터 타입이 다르면 오버로딩이 가능하다는 것을 알수 있습니다.

그렇다면 기준이 되는 메소드에서 매개변수가 적어진다면 어떻게 될까요? 아래의 코드는 매개변수 값이 3개에서 2개로 줄었지만 오버로딩이 가능합니다.

정리하자면 2개의 사실을 알 수 있습니다.

1. 오버로딩은 매개변수의 갯수가 같고 데이터 타입이 다르면 성립

2. 오버로딩은 매개변수의 갯수가 적어도 성립가능

조금 더 나아가서 아래의 메소드는 int형을 반환하는 메소드지만 float형을 인자로 받는 메소드입니다. 이 경우에는 인자로 받은 float형 매개변수의 값을 int형으로 형변환(Type Casting)을 한 뒤 리턴시켜야합니다.

아래의 코드와 같이 반환값이 없는 형태의 오버로딩도 가능합니다.

 

오버로딩 메소드 호출
오버로딩 메소드의 호출도 아래의 코드와 같이 객체화를 통해 가능합니다. int형을 반환하는 메소드는 당연히 int 변수를 선언하고 double형을 반환하는 메소드는 당연히 double 형 변수를 선언해야합니다.

 

 

 

 

728x90
반응형

'Language > Java-backup' 카테고리의 다른 글

[Java] 상속 (Inheritance)  (0) 2022.04.03
[Java] 캡슐화 (Encapsulation)  (0) 2022.04.03
[Java] 생성자 오버로딩  (0) 2022.04.03
[Java] 클래스  (0) 2022.04.03