Java 메서드 정의 및 사용 방법

메서드 정의와 사용

참고 사항:

  1. 메서드는 서로 독립적인 관계이며 중첩하여 정의할 수 없습니다.
  2. 메서드는 클래스 내에서 어디에든 위치할 수 있습니다.
  3. 메서드는 호출된 이후에만 실행됩니다.
  4. return 키워드는 지정된 데이터를 반환하고 메서드를 종료합니다(즉, return 이후의 코드는 실행되지 않습니다).
  5. void 키워드는 메서드 마지막에 숨겨진 return; 문을 추가하며, 생략될 수 없습니다.
// 매개변수 없는 호출
findMax();
// 상수를 사용한 매개변수 있는 호출
findMax(43, 25);
// 변수를 사용한 매개변수 호출 (타입과 개수 일치 필요)
int x = 12;
int y = 33;
// 리턴값 있는 호출
findMax(x, y);
int result = findMax2(1, 3) + 2;
System.out.println(result);

// 매개변수 없고 리턴값 없는 메서드 (유연성과 재사용성이 부족함)
public static void findMax() {
    int a = 10;
    int b = 20;
    System.out.println(a > b ? a : b);
}

// 매개변수가 있고 리턴값 없는 메서드 (처리된 데이터를 재사용할 수 없음)
public static void findMax(int a, int b) {
    System.out.println(a > b ? a : b);
}

// 매개변수와 리턴값 모두 있는 메서드 (처리된 데이터를 재사용 가능)
public static int findMax2(int a, int b) {
    int maxValue = a > b ? a : b;
    return maxValue;
}

메서드 오버로딩

오버로딩: 하나의 클래스 내에서 같은 이름을 가진 메서드들 중 매개변수 목록이 다른 경우 이를 오버로딩이라고 합니다.

오버로딩 판단 조건:-----메서드 이름이 같고 매개변수 목록이 다름(개수, 타입, 순서)

// 1
public static double calculate(int i, int j) {
    return 12.0;
}

// 2
public static double calculate(int j) {
    return 12.0;
}

// 3
public static double calculate(double i, double j) {
    return 12.0;
}

// 4
public static double calculate(double i) {
    return 12.0;
}

// 5
public static double calculate2(int i, int j) {
    return 12.0;
}

// 6
public static double calculate(int j, double i) {
    return 12.0;
}

// 7
public static double calculate(double i, int j) {
    return 12.0;
}

// 8
public static int calculate(double j, int i) {
    return 12;
}

// 9
public static calculate(double i, int j) {
}
//----------------------------------------
// 오버로딩
// 1-2: 메서드 이름이 같고 매개변수 개수가 다름
// 1-3: 메서드 이름이 같고 매개변수 타입이 다름
// 1-4: 메서드 이름이 같고 매개변수 개수와 타입이 다름
// 6-7: 메서드 이름이 같고 매개변수 타입 순서가 다름
//---------------------------------------
// 두 개의 메서드
// 1-5: 메서드 이름이 다름
// 7-8: 메서드 이름은 같지만 타입과 순서도 같으므로 이름 중 하나를 변경해야 함(컴파일 불가)
//---------------------------------------
// 1-9: 멤버 메서드는 반드시 "리턴 타입"이 필요함(구체적 타입 또는 void), 컴파일 불가
// 생성자 메서드: 클래스 이름과 동일하며 리턴 타입이 없음(void도 없음), 오버로딩 가능

호출 시 Java가 어떤 메서드를 선택하는지 결정 방식:

메서드 이름 + 매개변수 목록

참고 사항:

  • 멤버 메서드는 반드시 리턴 타입(구체적 타입 또는 void)이 있어야 합니다.
  • 생성자는 클래스 이름과 동일해야 하며 리턴 타입이 없습니다(void도 포함되지 않음).
  • 매개변수 순서는 오버로딩 판단에 영향을 주지 않으며, 매개변수 타입의 순서는 영향을 줍니다.

태그: java Method Overloading

9월 15일 22:24에 게시됨