본문 바로가기
Java

[Java] 메서드 오버로딩(Method OverLoading)에 대해서

by bkuk 2022. 9. 27.

오버로딩(OverLoading)이란?

 

사전적인 의미는 '과적하다'라는 뜻을 가지고 있습니다.

 

 기존 C언어에서는 "함수명이 고유하게 존재해야 한다." 라는 것을 시작으로

하나의 함수는 하나의 기능만을 구현하는 것으로 약속되어 있었으나,

자바에서는 하나의 메소드 이름으로 여러가지 기능을 구현하기 떄문에 이러한 이름이 쓰이고 있다. 

 

즉, 자바에서는 "함수명이 고유하지 않아도 된다"라는 뜻입니다.

하나의 클래스 내에 이미 사용하려는 이름 같은 이름을 가진 메소드가 있더라도
매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다.

 

메서드 오버로딩을 사용함으로써 메소드에 사용되는 이름을 절약할 수 있습니다.

또한, 메소드를 호출할 때 전달해야 할 매개변수의 타입이나 개수에 대해 크게 신경쓰지 않고 호출이 가능합니다.

이는, 객체 지향 프로그래밍의 특징인 다형셩(polymorphism)을 구현하는 방법 중 하나입니다.

메소드 오버로딩의 대표적인 예로 println()메소드를 들 수 있습니다.

 

 


 

소스 코드

 

class Method {

    void doFunction01() {

        System.out.println( "doFunction01() 호출" );
    }
}

public class MethodEx02_2 {

    public static void main(String[] args) {

        Method m = new Method();

        m.doFunction01();
    }
}

 

메소드 호출 후 메소드 출력

위의 내용은 일반적인 메소드 호출이므로, 예상한 것과 같이 메서드가 호출되는 것을 확인했습니다.

 

그렇다면, 같은 이름의 메소드를 컴파일 해본다면?

 

"doFunction01" 메서드는 이미 정의되었다는 컴파일 에러를 출력합니다.

 

 

그렇다면, 같은 이름의 메소드에 매개변수의 조건을 추가해서 시도해본다면?

각각 정수형의 자료형과 문자형의 자료형을 조건으로 부여했습니다.

 

"doFunction01" 메서드가 정상적으로 호출된 것을 확인했습니다.

 

 

같은 이름의 메소드, 매개변수 이름도 같지만 순서가 다른경우?

"doFunction01" 메서드가 정상적으로 호출된 것을 확인했습니다.

 

 

댓글