초과 적재

초과 적재

메소드 오버로딩의 핵심은 메소드 서명입니다.

메서드 시그니처는 메서드 선언에 지정된 매개변수 목록입니다.

두 메서드의 매개변수 번호, 유형 및 순서가 같으면 두 메서드의 서명이 동일합니다.

메소드 오버로딩은 같은 이름으로 메소드를 두 번 정의하는 것을 의미합니다.

Java는 클래스에서 동일한 이름을 가진 둘 이상의 메소드를 갖는 것을 허용하지 않습니다.

그러나 매개 변수의 수나 유형을 변경하면 단일 이름으로 메서드를 작성할 수 있습니다.

즉, 메서드 오버로딩은 이름은 같고 서명은 다른 여러 메서드를 정의하는 것입니다.

이 메서드 오버로드를 사용하면 메서드에 사용되는 이름을 저장할 수 있습니다.

메서드를 호출할 때 전달해야 하는 매개 변수의 유형이나 개수에 대해 크게 걱정하지 않고 메서드를 호출할 수도 있습니다.

메서드 오버로딩은 객체 지향 프로그래밍의 특징 중 하나인 다형성을 구현하는 방법입니다.

메소드 오버로딩의 전형적인 예는 println() 메소드입니다.

println() 메서드는 받는 매개변수의 유형에 따라 다음과 같이 다양한 프로토타입 중에서 적절한 프로토타입을 호출합니다.

class Test {
	void display(int num1) { 
    	System.out.println(num1); 
   	    }
    //1      
	void display(int num1, int num2) { 
    	System.out.println(num1 * num2); 
        }
        
	static void display(int num1, double num2) { 
    	System.out.println(num1 + num2); 
        }
}

public class prog {
	public static void main(String() args) {
		Test myfunc = new Test();
		myfunc.display(10);
		myfunc.display(10, 20);
		myfunc.display(10, 3.14);
        //2
		myfunc.display(10, 'a');
	}
}

위의 예에서와 같이 메소드 오버로딩은 매개변수의 수와 매개변수 유형을 모두 변경하여 작성할 수 있습니다.

위 예제에서 ②행의 display() 메소드를 호출하면 영문 소문자 ‘a’의 ASCII 코드 값이 97이므로 자동으로 int형으로 변환되어 ①행의 display() 메소드가 호출됩니다.

byte형 → short형 → int형 → long형 → float형 → double형

문자 유형