Java/Java Advance

Java Overloading 이해하기

맛집줘 2023. 9. 17. 18:11
728x90
반응형

자바에서의 메서드 오버로딩(Method Overloading)에 대해 알아보겠습니다. 메서드 오버로딩은 같은 이름의 메서드를 여러 개 정의하고, 각 메서드가 다른 매개변수 목록을 가지는 객체 지향 프로그래밍의 중요한 개념 중 하나입니다. 이를 통해 코드의 가독성을 높이고, 메서드를 더 유연하게 사용할 수 있습니다.

Method Overloading이란?

메서드 오버로딩은 같은 이름의 메서드를 여러 개 정의하는 것을 의미합니다. 이때 각 메서드는 서로 다른 매개변수 목록을 가져야 합니다. 메서드 오버로딩은 메서드의 이름은 같지만 매개변수의 개수, 데이터 타입, 순서가 다를 때 사용됩니다. 컴파일러는 어떤 메서드를 호출할지 메서드의 시그니처(매개변수 목록)를 기준으로 결정합니다.

Developer1 클래스와 Method Overloading

Developer1 클래스를 통해 메서드 오버로딩을 예제로 살펴보겠습니다. Developer1 클래스는 개발자의 정보를 저장하고 관리하는 클래스입니다. 이 클래스에는 다음과 같은 메서드가 포함되어 있습니다.

1. `participateProject()`: 프로젝트에 참여하는 메서드
2. `participateProject(String project)`: 프로젝트에 특정 이름의 프로젝트로 참여하는 메서드 (메서드 오버로딩)
3. `instruct()`: 강의를 통해 수입을 증가시키는 메서드
4. `instruct(int lectureCount)`: 특정 횟수의 강의를 통해 수입을 증가시키는 메서드 (메서드 오버로딩)

Method Overloading 예제

public class Developer1Test {
    public static void main(String[] args) {
        Developer1 developer = new Developer1();

        System.out.println("이름은: " + developer.name);
        System.out.println("직업은: " + developer.job);
        System.out.println("평균 수입은: " + developer.avgIncome);
        System.out.println("PJT 경력은: " + developer.projectCareer);

        System.out.println("==========================");

        developer.participateProject();
        System.out.println("평균 수입은: " + developer.avgIncome);
        System.out.println("project 참여 경력은: " + developer.projectCareer);

        System.out.println("==========================");

        developer.instruct();
        System.out.println("평균 수입은: " + developer.avgIncome);

        System.out.println("==========================");

        String projectName = "한미은행";
        developer.participateProject(projectName);
        System.out.println("평균 수입은: " + developer.avgIncome);
        System.out.println("project 참여 경력은: " + developer.projectCareer);

        System.out.println("==========================");

        int lectureCount = 2;
        developer.instruct(lectureCount);
        System.out.println("평균 수입은: " + developer.avgIncome);
    }
}


위 예제에서는 `participateProject` 메서드와 `instruct` 메서드가 오버로딩되어 있습니다. `participateProject` 메서드는 매개변수 없이 호출할 수 있으며, `participateProject(String project)` 메서드는 프로젝트 이름을 전달하여 호출할 수 있습니다. 마찬가지로, `instruct` 메서드는 강의를 하나도 전달하지 않고 호출할 수 있으며, `instruct(int lectureCount)` 메서드는 강의 횟수를 전달하여 호출할 수 있습니다.

728x90
반응형