메소드 오버로딩(Method Overloading)
- 한 클래스 내에 동일한 이름의 메소드를 둘 이상 정의하는 것은 허용되지 않는다. 그러나 매개변수의 선언이 다르면 가능하다. —> 메소드 오버로딩
class MyHome {
void mySimpleRoom(int n) { ••• }
void mySimpleRoom(int n1, int n2) { ••• }
void mySimpleRoom(double d1, double d2) { ••• }
}
- 메소드의 이름이 같아도 매개변수 선언이 다르면 메소드 호출문의 전달인자를 통해서 호출된 메소드를 구분할 수 있다.
- 반환형이 다른 경우에는 메소드 오버로딩이 성립하지 않는다. —> 반환형은 메소드를 선택하는데 있어서의 판단 기준이 아니기 때문
- int simpleMethod() { ••• }, double simpleMethod() { ••• } —> 반환형이 다른건 메소드 오버로딩 성립 XXX
- 매개변수의 수는 같지만 매개변수의 형이 다른 경우의 메소드 오버로딩
class AAA {
void simple(int p1, int p2) { ••• }
void simple(int p1, double p2) { ••• }
}
AAA inst = new AAA();
inst.simple(7, ‘K’)
—> 자동 형 변환 규칙을 적용하되 가장 가까운 위치에 놓여있는 자료형으로 형 변환을 우선 시도
—> void simple(int p1, int p2) { ••• } 호출
- 생성자의 매개변수 선언이 다르면 이 또한 오버로딩 관계이다.
