초과 적재
메소드 오버로딩의 핵심은 메소드 서명입니다.
메서드 시그니처는 메서드 선언에 지정된 매개변수 목록입니다.
두 메서드의 매개변수 번호, 유형 및 순서가 같으면 두 메서드의 서명이 동일합니다.
메소드 오버로딩은 같은 이름으로 메소드를 두 번 정의하는 것을 의미합니다.
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형
문자 유형