메소드 오버로딩
위에서 사용된 max 메소드는 int 유형 데이터에만 적용됩니다. 하지만 두 가지 부동 소수점 데이터 유형의 최대값을 얻으려면 어떻게 해야 할까요?
해결 방법은 다음 코드와 같이 이름은 같지만 매개 변수가 다른 다른 메서드를 만드는 것입니다.
public static double max(double num1, double num2) { if (num1 > num2) return num1; else return num2;}
max 메소드를 호출할 때 int 매개변수를 전달하면 int 매개변수의 max 메소드가 호출됩니다.
double 매개변수가 전달되면 double 유형의 max 메소드 본문이 호출됩니다. 이를 메소드 오버로딩이라고 합니다.
즉, 클래스의 두 메소드는 이름은 같지만 매개변수 목록은 다릅니다.
Java 컴파일러는 메소드 서명을 기반으로 호출해야 하는 메소드를 결정합니다.
메소드 오버로딩은 프로그램을 더 명확하고 읽기 쉽게 만들 수 있습니다. 밀접하게 관련된 작업을 수행하는 메서드는 동일한 이름을 사용해야 합니다.
오버로드된 메서드에는 다른 매개변수 목록이 있어야 합니다. 수정자 또는 반환 유형만을 기반으로 메서드를 오버로드할 수 없습니다.
가변 범위
변수의 범위는 변수가 참조될 수 있는 프로그램의 부분입니다.
메소드 내에서 정의된 변수를 지역 변수라고 합니다.
지역 변수의 범위는 선언부터 시작하여 이를 포함하는 블록의 끝에서 끝납니다.
지역 변수를 사용하려면 먼저 선언해야 합니다.
메소드의 매개변수 범위는 전체 메소드를 포함합니다. 매개변수는 실제로 지역 변수입니다.
for 루프의 초기화 부분에서 선언된 변수는 루프 전체에 걸쳐 범위를 갖습니다.
그러나 루프 본문에 선언된 변수의 적용 범위는 해당 선언부터 루프 본문 끝까지입니다. 여기에는 아래와 같은 변수 선언이 포함되어 있습니다.
메서드 내에서 중첩되지 않은 다른 블록에서 동일한 이름을 가진 지역 변수를 여러 번 선언할 수 있지만 중첩된 블록 내에서 지역 변수를 두 번 선언할 수는 없습니다.