클래스를 이용하기 위해 보통 클래스로부터 객체를 생성해야함
한 클래스로부터 여러 개의 객체들을 생성할 수 있고, 이 객체들을 구별할 수 있어야함
-> 이를 위해 객체를 가리키는 참조변수를 사용한다
참조 변수를 이용하여 객체가 제공하는 서비스를 이용하고, 이것이 객체 지향 프로그래밍의 핵심 중의 하나이다

 

메소드 다중 정의(method overloading)

  • 한 클래스내에 같은 이름을 가지는 두 개 이상의 메소드들이 있을 수 있다
  • 한 클래스 내에 같은 이름을 가지는 메소드를 여러 개 정의하는 것을 메소드 다중 정의라고 부름
  • 비슷한 메소드들을 다른 유형의 데이터를 가지고 실행할 필요가 있을 때 유용함
  • 예로 문자열과 정수 등과 같은 다양한 유형의 데이터를 출력할 필요가 있다, 이를 위해 System 클래스는 여러 개의 println 메소드를 제공함

다중화된 메소드들은 다음 조건 중 하나를 만족해야함

  1. 형식 매개 변수들의 수가 서로 다름
  2. 형식 매개 변수들의 수가 같을 때는 형식 매개 변수들 중 적어도 하나의 데이터형이 다름

두 가지로 나누기를 수행하는 프로그램

// 두 가지로 나누기를 수행함
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 메소드에 대응하는지 판별할 수 없기 때문
반응형

+ Recent posts