Langauge/Java-basic

[Java] 메서드 시그니처와 메서드 오버로딩

강잇 2022. 7. 19. 23:37

메서드 시그니처(Method Signature)

  • 메서드 시그니처란 메서드명매개변수의 자료형을 의미
  • 메서드의 반환 타입은 해당되지 않는다.

메서드 오버로딩(Method Overloading)

  • JVM은 메서드명이 동일해도 매개변수의 자료형 또는 개수가 다르면 다른 메서드라고 인식한다.
  • 위의 특징을 이용하여 하나의 클래스 안에 동일한 이름의 메서드를 여러 개 정의하는 것을 메서드 오버로딩이라 한다.

메서드 오버라이딩 : 오토바이(메서드) 하나에 여러 개의 무언가(메서드의 기능)를 싣고 있다.

public class Main {
    public static void main(String[] args) {
        MyClass mc = new MyClass();

        mc.print(1);
        mc.print(1, 10);
        mc.print('X');
        mc.print("메서드 오버로딩");
    }
}
class MyClass {
    public void print(int x) {
        System.out.println("정수형 : " + x);
    }

    public void print(int x, int y) {
        System.out.println("정수형 : " + x + "," + y);
    }

    public void print(char x) {
        System.out.println("문자형 : " + x);
    }

    public void print(String s) {
        System.out.println("문자열 : " + s);
    }
}

메서드 오버로딩을 하는 이유

  • System.out.println()메서드는 인자로 어떤 자료형의 인자를 전달하여도 출력한다.
  • 만약 메서드 오버로딩을 사용하지 않는다면 입력매개변수의 자료형에 따라 메서드명을 전부 다르게 해야 한다.
    (예 : printlnInt(int x), printlnChar(char x), printlnLong(long x), ....)
  • 즉, 입력매개변수가 다른 여러 경우의 수를 하나의 메서드로 해결하기 위해 메서드 오버로딩을 사용한다.

메서드 오버로딩의 예 : System.out.println()