이번 편의 목표: 연체료 계산을 메서드로 분리하고, 매개변수를 받아 결과를 돌려줍니다.

같은 곱셈을 여러 곳에 적으면 하루 요금이 바뀔 때 빠뜨리는 곳이 생깁니다. 계산에 이름을 붙이면 호출하는 쪽은 일수만 넘기면 됩니다.

반환이 있는 메서드

아직 객체는 만들지 않습니다. main과 같은 클래스의 static 메서드로 시작합니다.

Java
public class FeeMethod {
    static int lateFee(int lateDays) {
        return lateDays * 100;
    }

    public static void main(String[] args) {
        System.out.println(lateFee(3));
        System.out.println(lateFee(0));
    }
}

출력은 300과 0입니다. return은 값을 호출한 곳으로 돌려주고 그 메서드를 끝냅니다. 매개변수의 이름은 호출하는 쪽의 변수 이름과 달라도 됩니다.

반환값이 없으면 void를 적습니다. 출력만 하는 메서드가 그 예입니다.

Java
static void printFee(String title, int lateDays) {
    System.out.println(title + " " + lateFee(lateDays) + "원");
}

오버로딩

이름이 같고 매개변수 구성이 다르면 오버로딩입니다. 하루 요금을 따로 받는 계산을 추가할 수 있습니다.

Java
static int lateFee(int lateDays, int dailyFee) {
    return lateDays * dailyFee;
}

lateFee(3)은 첫 메서드, lateFee(3, 50)은 둘째 메서드가 선택됩니다. 전자책의 50원은 상속 편에서 객체의 책임으로 옮깁니다. 지금은 계산을 메서드로 빼는 것까지가 목표입니다.

직접 해 보기

연체 일수와 하루 요금을 받아 곱을 반환하는 메서드를 만들고, 2일과 100원으로 호출해 출력하세요.

해설

Java
public class CustomFee {
    static int lateFee(int lateDays, int dailyFee) {
        return lateDays * dailyFee;
    }

    public static void main(String[] args) {
        System.out.println(lateFee(2, 100));
    }
}

출력은 200입니다.