Over Load

  • (함수의) 이름만 같고, 매개변수의 자료형이나 개수가 다른 함수 == 동명이인
  • 왜 오버로딩을 하는가? -> 기능의 세분화
  • 같은 기능을 수행하지만 입력 받는 매개변수가 달라야 할 경우

오버로딩 함수의 예시 : Integer.parseInt()

    String str = "123";
    int num10 = Integer.parseInt(str);    // 문자열을 10진수로

    str = "1010";
    num10 = Integer.parseInt(str, 2)    // 이진수를 10진수로

코드 예시 1 : 매개변수의 자료형이 다른 경우

    void method(char c) {
        System.out.println("MyClass3 method(char c)");
    }

    void method(int i) {
        System.out.println("MyClass3 method(int i)");
    }

// 호출부
    cls.method('A');
    cls.method(123);

코드 예시 2 : 매개변수의 입력 받는 순서가 다른 경우

    void method(char c, int i) {
        System.out.println("MyClass3 method(char c, int i)");
    }

    void method(int i, char c) {
        System.out.println("MyClass3 method(int i, char c)");
    }

// 호출부
    cls.method('B', 123);
    cls.method(123, 'C');

가변인수

  • 0개 이상의 매개변수를 전달 가능함
  • ... 으로 형식 처리
  • 가변 인자는 내부적으로 배열로 처리됨
    int count(int...number) {
        int count = 0;
        for (int i=0; i<number.length; i++) {
            count = count + number[i];
        }
        return count;
    }

    // 호출부
    System.out.println(cls.count(1, 2, 3));
    System.out.println(cls.count(10,9));
    System.out.println(cls.count());

 

실행결과

 

+ Recent posts