JAVA/JAVA (IntelliJ)

[JAVA] 객체 지향 프로그래밍 (OOP) - 클래스, 메서드, 메서드 오버로딩 📦💻

juunghee 2025. 2. 25. 16:02

목차

    객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 객체라는 단위로 나누어 개발하는 프로그래밍 패러다임입니다. 자바와 같은 언어에서 클래스객체는 객체 지향 프로그래밍의 핵심 개념입니다. 또한, 메서드메서드 오버로딩을 활용하면 코드의 재사용성유지보수성을 높일 수 있습니다. 이번 블로그에서는 자바에서 클래스, 메서드, 그리고 메서드 오버로딩의 개념을 다루고, 각 개념을 어떻게 활용할 수 있는지 예시와 함께 설명하겠습니다.

     

    1. 객체 지향 프로그래밍(OOP)의 기본 개념

    객체 지향 프로그래밍(OOP)은 소프트웨어 설계를 객체라는 단위로 나누어 각 객체가 데이터를 처리하는 방식으로 프로그래밍하는 패러다임입니다. 주요 개념은 다음과 같습니다:

    • 클래스(Class): 객체를 생성하기 위한 설계도입니다. 객체는 클래스에서 정의된 속성(변수)과 동작(메서드)을 가집니다.
    • 객체(Object): 클래스를 기반으로 실제로 생성된 실체입니다. 클래스는 설계도이고, 객체는 실체입니다.
    • 메서드(Method): 객체가 수행하는 동작입니다. 메서드는 객체가 가진 기능을 정의하며, 함수와 비슷한 역할을 합니다.

    2. 클래스 (Class)

    자바에서 클래스는 객체를 정의하는 템플릿입니다. 클래스는 속성(필드)동작(메서드)을 정의하며, 이 클래스를 기반으로 실제 객체를 생성할 수 있습니다.

    클래스 정의 예시

    class Car {
        // 속성(필드)
        String color;
        String model;
    
        // 동작(메서드)
        void drive() {
            System.out.println(model + " is driving.");
        }
    }

    위의 예시에서 Car 클래스는 두 개의 필드(color, model)와 하나의 메서드(drive())를 가지고 있습니다. 이 클래스는 이제 Car 객체를 생성할 수 있는 설계도입니다.

    객체 생성 예시

    public class Main {
        public static void main(String[] args) {
            // Car 객체 생성
            Car myCar = new Car();
            myCar.color = "Red";
            myCar.model = "Tesla";
    
            // 객체 메서드 호출
            myCar.drive(); // 출력: Tesla is driving.
        }
    }

    위 코드에서 myCarCar 클래스에서 생성된 객체입니다. myCar 객체의 속성에 값을 할당하고, 메서드 drive()를 호출하여 객체의 동작을 실행합니다.

    3. 메서드 (Method)

    메서드는 클래스 안에 정의된 동작입니다. 메서드는 객체의 기능을 구현하며, 객체가 수행할 작업을 정의합니다. 메서드는 입력값(매개변수)을 받아 처리하고, 결과를 반환할 수도 있습니다.

    메서드 정의 예시

    class Calculator {
        // 두 정수의 합을 구하는 메서드
        int add(int a, int b) {
            return a + b;
        }
    
        // 두 실수의 곱을 구하는 메서드
        double multiply(double a, double b) {
            return a * b;
        }
    }

    위 코드에서 add()multiply()는 두 개의 매개변수를 받아 계산 후 결과를 반환하는 메서드입니다.

    메서드 호출 예시

    public class Main {
        public static void main(String[] args) {
            Calculator calc = new Calculator();
            System.out.println("Sum: " + calc.add(5, 10)); // 출력: Sum: 15
            System.out.println("Product: " + calc.multiply(5.5, 3.5)); // 출력: Product: 19.25
        }
    }

    Calculator 클래스의 메서드를 호출하여 두 수의 합과 곱을 출력합니다.

    4. 메서드 오버로딩 (Method Overloading)

    메서드 오버로딩같은 이름의 메서드다른 매개변수로 정의하는 기법입니다. 즉, 메서드 이름은 동일하지만, 매개변수의 개수타입이 다르면 여러 번 정의할 수 있습니다. 이 방식은 유연성을 제공하며, 동일한 작업을 다양한 방법으로 처리할 수 있게 합니다.

    메서드 오버로딩 예시

    class Calculator {
        // 두 정수의 합을 구하는 메서드
        int add(int a, int b) {
            return a + b;
        }
    
        // 세 정수의 합을 구하는 메서드
        int add(int a, int b, int c) {
            return a + b + c;
        }
    
        // 두 실수의 합을 구하는 메서드
        double add(double a, double b) {
            return a + b;
        }
    }

     

    위 코드에서 add() 메서드는 매개변수의 개수타입에 따라 여러 번 정의되어 있습니다. 이렇게 메서드 오버로딩을 사용하면 다양한 입력을 처리할 수 있습니다.

    메서드 오버로딩 호출 예시

    public class Main {
        public static void main(String[] args) {
            Calculator calc = new Calculator();
    
            System.out.println("Sum of 2 integers: " + calc.add(5, 10)); // 출력: Sum of 2 integers: 15
            System.out.println("Sum of 3 integers: " + calc.add(5, 10, 15)); // 출력: Sum of 3 integers: 30
            System.out.println("Sum of 2 doubles: " + calc.add(5.5, 10.5)); // 출력: Sum of 2 doubles: 16.0
        }
    }

     

    add() 메서드는 매개변수의 개수와 타입에 따라 다르게 정의되었으며, 이에 맞는 메서드가 호출됩니다.

    5. 메서드 오버로딩의 장점

    • 가독성 향상: 같은 작업을 수행하는 메서드가 동일한 이름을 갖기 때문에 코드가 간결하고 직관적입니다.
    • 유연성: 다양한 타입이나 개수의 매개변수를 처리할 수 있어 유연한 코드를 작성할 수 있습니다.
    • 중복 코드 감소: 여러 개의 메서드를 작성하는 대신 하나의 이름으로 다양한 기능을 수행할 수 있습니다.

    6. 결론

    자바에서 클래스메서드, 메서드 오버로딩은 객체 지향 프로그래밍의 핵심 개념입니다. 클래스는 객체를 생성하기 위한 설계도이며, 메서드는 객체의 행동을 정의합니다. 메서드 오버로딩을 통해 동일한 작업을 다양한 입력에 맞게 처리할 수 있습니다. 이러한 개념들을 잘 활용하면, 프로그램을 유연하고 효율적으로 만들 수 있습니다. 객체 지향 프로그래밍을 통해 복잡한 시스템을 간단하게 설계하고 관리할 수 있으며, 이는 코드의 재사용성유지보수성을 높이는 데 중요한 역할을 합니다.

    home