본문 바로가기
Java

자바 중급 013. 메서드 오버로딩(overloading) 이란?

by Smart Factory in 2020 2021. 8. 27.
728x90
반응형

안녕하세요. 스마트 팩토리입니다.
자바 중급 013. 메서드 오버로딩(overloading)에 대해 알아보겠습니다. 

1. 메서드 오버로딩

가. 메서드 오버로딩

-하나의 클래스에 같은 이름의 메서드를 여러개 정의 하는 것.
-매개변수의 타입에 따라 메서드 오버로딩이 된다. 
-매개변수 타입은 다르지만 실행 명령이 하는 작업이 동일하다. 

나. 메서드 오버로딩 조건

-메서드의 이름이 같다. 
-매개변수(인자값, 파라미터 )의 개수또는 타입이 달라야 한다. 

다. 메서드 오버로딩의 예

<<ovload.java 클래스 >>

클래스의 메서드에서 메서드 변수는 동일하지만 매개변수가 다르다. 이는 결과적으로 두개의 합을 의미하는 것으로 기능은 동일하다. 단지 인자값의 자료형이 다르다. 이를 메서드 오버로딩이라고 한다. 

int add(int x, int y
float add(float x, float y
long add(long x, long y
double add(double x, double y

package overloading;

public class ovload {
int a;
int b;

int add(int x, int y) {
return x + y;
};

float add(float x, float y) {
return x + y;
};

long add(long x, long y) {
return x + y;
};

double add(double x, double y) {
return x + y;
};

}

이클립스 자동 정렬 단축키 : 전체 선택 또는 부분 선택 후  - ctrl+shift+f

 

<< ovloadEx.java>>실행클래스 작성

실행 클래스에 참조 변수를 작성하여 해당 add 매서드를 작용해 본 코딩입니다.

실행 클래스에서 메소드 인자값이 다른 부분의 메소드가 모두 나오는 것을 알 수 있습니다. 파라미터의 타입에 따라 해당 메소드를 적용하면 됩니다. 

 

int Ia=m1.add(10, 20);
long La=m1.add(5000l,3000l);
float Fa=m1.add(1.5f, 2.5f);

 

위 적용된 메소드는 각각 다른 메소드이지만 동일한 기능을 합니다. 메소드 변수는 동일한 add이지만 매개변수 타입과 수는 달리하여 작성할 수 있는데 이를 메소드 오버로딩이라고 합니다. 

package overloading;

public class OvloadEx {

public static void main(String[] args) {
ovload m1=new ovload();
int Ia=m1.add(10, 20);
long La=m1.add(5000l,3000l);
float Fa=m1.add(1.5f, 2.5f);

System.out.println(" Ia 값 : "+ Ia);
System.out.println(" La 값 : "+ La);
System.out.println(" Fa 값 : "+ Fa);

}

}

 

코드 실행값은 문제 없이 나오는 것을  알 수 있습니다. 

 

라. 오버로딩이 아닌 경우 - 에러가 발생함. 

 

매개변수의 수와 타입이 동일한 경우는 에러가 발생합니다. 

또한 메서드 명의 데이터 타입은 오버로딩과 무관합니다. 

직접 코딩을 해보면 오버로딩이 성립하지 않는 경우 빨간 줄이 생기기 때문에 왜 그런지 알 수 있습니다. 

눈으로 보는 것보다는 직접 작성해 보면서 바로 이해할 수 있습니다. 

 

728x90
반응형

댓글