충분히 쌓여가는
메소드 다중 정의(method overloading) 본문
클래스를 이용하기 위해 보통 클래스로부터 객체를 생성해야함
한 클래스로부터 여러 개의 객체들을 생성할 수 있고, 이 객체들을 구별할 수 있어야함
-> 이를 위해 객체를 가리키는 참조변수를 사용한다
참조 변수를 이용하여 객체가 제공하는 서비스를 이용하고, 이것이 객체 지향 프로그래밍의 핵심 중의 하나이다
메소드 다중 정의(method overloading)
- 한 클래스내에 같은 이름을 가지는 두 개 이상의 메소드들이 있을 수 있다
- 한 클래스 내에 같은 이름을 가지는 메소드를 여러 개 정의하는 것을 메소드 다중 정의라고 부름
- 비슷한 메소드들을 다른 유형의 데이터를 가지고 실행할 필요가 있을 때 유용함
- 예로 문자열과 정수 등과 같은 다양한 유형의 데이터를 출력할 필요가 있다, 이를 위해 System 클래스는 여러 개의 println 메소드를 제공함
다중화된 메소드들은 다음 조건 중 하나를 만족해야함
- 형식 매개 변수들의 수가 서로 다름
- 형식 매개 변수들의 수가 같을 때는 형식 매개 변수들 중 적어도 하나의 데이터형이 다름
두 가지로 나누기를 수행하는 프로그램
// 두 가지로 나누기를 수행함
public class Dibvision {
// 정수형 나누기
public static int divide(int amount, int number)
{
return amount / number;
}
// 실수형 나누기
public static double divide(double amount, double number)
{
return amount / number;
}
public static void main(String[] args) {
int result1 = divide(10, 4);
double result2 = divide(10.0, 4.0);
System.out.println("정수형 나누기 결과: " + result1);
System.out.println("실수형 나누기 결과: " + result2);
}
}
출력 결과
정수형 나누기 결과: 2 실수형 나누기 결과: 2.5 |
클래스 Division 내에 divide 메소드가 두 개 존재
public static int divide(int amount, int number) {...}
public static double divide(double amount, double number) {...}
- 위 메소드들은 같은 이름을 가지고 매개 변수들의 수도 같음
- 그러나 첫 번째 메소드는 매개변수들의 데이터 형이 int 형, 두 번째 메소드는 매개변수들의 데이터형이 double 형
- 따라서 main 메소드에서 다음 호출문은 첫 번째 divide 메소드가 대응됨 int result1 = divide(10, 4)
- 다음 호출문은 두 번째 divide 메소드가 대응됨 double result2 = divide(10.0, 4.0);
다음 메소드들은 같은 클래스내에 정의할 수 없음
public double add(int x, int y) {...}
public int add(int x, int y) {...}
- 두 개의 메소드들이 반환형을 제외하고 머리부가 같은 경우는 허용되지 않음
- 허용되지 않는 이유: 메소드 호출문이 어느 add 메소드에 대응하는지 판별할 수 없기 때문
'Java' 카테고리의 다른 글
객체와 참조 (0) | 2023.02.06 |
---|---|
생성자 메소드(Default constructor) (0) | 2023.02.06 |
접근자 메소드(get method) / 변경자 메소드(set method (1) | 2023.02.04 |
접근 수정자(Access Modifier) public / private (0) | 2023.02.03 |
클래스 (0) | 2023.02.03 |