본문 바로가기
자바 (JAVA)

📚 JAVA 5강: 객체 지향 프로그래밍 (OOP) - 클래스와 객체

by demianpark127 2025. 1. 3.
SMALL

📚 5강: 객체 지향 프로그래밍 (OOP) - 클래스와 객체


🚀 1. 객체지향 프로그래밍(OOP)이란?

  • **객체 지향 프로그래밍(Object-Oriented Programming, OOP)**은 현실 세계를 프로그래밍에 적용하는 방법론입니다.
  • 프로그램을 객체(Object) 단위로 나누고, 이 객체들이 상호작용하여 문제를 해결합니다.

📌 1.1 객체지향 프로그래밍의 4가지 핵심 요소

  1. 캡슐화(Encapsulation): 데이터와 메서드를 하나로 묶고 외부로부터 숨김.
  2. 상속(Inheritance): 기존 클래스를 재사용하여 새로운 클래스를 만듦.
  3. 다형성(Polymorphism): 같은 메서드가 다른 객체에서 다른 방식으로 동작.
  4. 추상화(Abstraction): 복잡한 시스템에서 핵심만 표현.

🚀 2. 클래스(Class)와 객체(Object)

📌 2.1 클래스란?

  • **클래스(Class)**는 객체를 생성하기 위한 설계도입니다.
  • 속성(멤버 변수)과 동작(메서드)으로 구성됩니다.

📌 2.2 객체란?

  • **객체(Object)**는 클래스를 기반으로 생성된 실체입니다.
  • **클래스의 인스턴스(Instance)**라고도 합니다.

📌 2.3 클래스 선언 및 객체 생성

클래스 선언

public class Car {
    // 멤버 변수 (속성)
    String brand;
    String color;
    int speed;

    // 메서드 (동작)
    void drive() {
        System.out.println(brand + "가(이) 달립니다.");
    }

    void stop() {
        System.out.println(brand + "가(이) 멈춥니다.");
    }
}

객체 생성 및 사용

public class Main {
    public static void main(String[] args) {
        // 객체 생성
        Car myCar = new Car();

        // 멤버 변수 값 할당
        myCar.brand = "Hyundai";
        myCar.color = "Red";
        myCar.speed = 100;

        // 메서드 호출
        myCar.drive();
        myCar.stop();
    }
}

📌 출력 결과:

Hyundai가(이) 달립니다.
Hyundai가(이) 멈춥니다.

 

🚀 3. 생성자(Constructor)

📌 3.1 생성자란?

  • 객체를 생성할 때 자동으로 호출되는 메서드입니다.
  • 클래스 이름과 동일해야 하며 반환 타입이 없습니다.

📌 3.2 생성자 선언

기본 생성자 (Default Constructor)

public class Car {
    String brand;
    String color;

    // 기본 생성자
    public Car() {
        System.out.println("Car 객체가 생성되었습니다.");
    }
}

매개변수 생성자 (Parameterized Constructor)

public Car(String brand, String color) {
    this.brand = brand;
    this.color = color;
}

생성자 사용 예시

public class Main {
    public static void main(String[] args) {
        Car car1 = new Car(); // 기본 생성자 호출
        Car car2 = new Car("BMW", "Black"); // 매개변수 생성자 호출

        System.out.println(car2.brand + ", " + car2.color);
    }
}

📌 출력 결과:

Car 객체가 생성되었습니다.
BMW, Black

 

🚀 4. this 키워드

  • this현재 객체 자신을 참조하는 키워드입니다.
  • 주로 멤버 변수와 매개변수 이름이 충돌할 때 사용됩니다.

this 예제

public class Car {
    String brand;

    public Car(String brand) {
        this.brand = brand; // this로 멤버 변수와 매개변수 구분
    }

    void printBrand() {
        System.out.println("브랜드: " + this.brand);
    }
}

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

  • 같은 이름의 메서드를 매개변수의 타입, 개수, 순서를 다르게 하여 여러 개 정의하는 것.

 메서드 오버로딩 예제

 

public class Calculator {
    int add(int a, int b) {
        return a + b;
    }

    double add(double a, double b) {
        return a + b;
    }
}

public class Main {
    public static void main(String[] args) {
        Calculator calc = new Calculator();

        System.out.println(calc.add(5, 10)); // 정수 더하기
        System.out.println(calc.add(5.5, 10.5)); // 실수 더하기
    }
}

📌 출력 결과:

15
16.0

🚀 6. 접근 제어자 (Access Modifiers)

  • 클래스, 변수, 메서드의 접근 범위를 제어합니다.

제어자설명같은 클래스같은 패키지상속 클래스다른 패키지

public 모두 접근 가능
protected 상속 및 같은 패키지 접근 가능
default 같은 패키지 접근 가능
private 같은 클래스에서만 접근 가능

🚀 7. 실습 과제

1. 클래스와 객체 연습

  • Person 클래스를 만들고 이름, 나이 멤버 변수를 선언하세요.
  • 생성자를 통해 이름과 나이를 초기화하세요.
  • introduce() 메서드를 만들어 정보를 출력하세요.

2. 생성자와 this 사용

  • Book 클래스를 만들고 제목과 저자를 생성자를 통해 초기화하세요.
  • printInfo() 메서드로 책 정보를 출력하세요.

🎯 학습 목표

  1. 클래스와 객체의 개념을 이해하고 사용할 수 있다.
  2. 생성자와 this 키워드를 활용할 수 있다.
  3. 메서드 오버로딩을 통해 다양한 메서드를 정의할 수 있다.
  4. 접근 제어자를 이해하고 적절하게 사용할 수 있다.

다음 강의 예고: 6강 - 객체 지향 프로그래밍 (OOP) - 상속과 오버라이딩

다음 강의에서는 **상속(Inheritance)**과 **오버라이딩(Overriding)**에 대해 학습합니다. 😊

LIST