본문 바로가기
IT_Developers/JAVA

JAVA - 오버로딩(Overloading)이란? / 예제 소스 / 컴파일 원리

by 고코더 2020. 3. 11.

오버로딩 사용하는 방법 원리


안녕하세요.
고코더 입니다.


자바가 가지고 있는 다형성 특징 중에 메소드를 오버로딩 하는 방법이 있습니다. 같은 이름의 메소드를 매겨 변수의 유형과 갯수를 통해 다르게 사용 가능하도록 하는 기술입니다. 예제 소스를 작성하면서 좀 더 알아보겠습니다.



OverloadingGO.java : 오버로딩을 사용합니다. 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class OverloadingGO{
 
    void overloading(){
        System.out.println("변수 없음");
    }
 
    void overloading(int a, string b){
        System.out.println("변수 "+ a + ", " + b);
    }
   
    void overloading(double c){
        System.out.println("변수 " + d);
    }
}
cs

overloading 이라는 메소드의 매개변수가 모두 다릅니다. 없는게 있고 int와 string으로 받는거 그리고 마지막은 double 형만 받는 메소드가 있습니다. 이들은 모두 같은 메소드지만 매개변수가 다르므로 다르기 실행 됩니다.


gocoder.java : 오버로딩을 사용하는 소스


1
2
3
4
5
6
7
8
9
10
11
public class gocoder{
 
    public static void main(String[] args) {
       
        OverloadingGO og = new OverloadingGO();
       
        og.overloading();
        og.overloading(10"고코더");
        og.overloading(50);
 
    }
cs

오버로딩된 소스를 사용하는 방법입니다. 메소드 이름은 같아도 매개변수에 차이에 따라 다른 기능을 구현 가능합니다. 



컴파일시 오버로딩의 동작 원리


컴파일 전에는 매겨변수만 다르게 하여 사용하지만 정작 컴파일 후에는 메서드의 이름을 임의로 다르게 만듭니다.


- 메서드의 이름으로 매개변수(parameter)를 다르게 하여 사용
- 매개변수의 개수 및 매개변수의 데이터 타입으로 구분
- 컴파일시 같은 이름의 메서드를 다른 이름의 메서드로 컴파일  


마무리


신기한 오버로딩


댓글