코딩/c++

C++ 객체지향 문법(8)

Yellow Kirin 2025. 6. 2. 20:16

C++ 객체지향 문법: 상속, 캡슐화, 다형성


1. 캡슐화 (Encapsulation)

데이터와 함수를 하나로 묶고, 외부에서 내부 데이터를 직접 접근하지 못하게 막는 방식
접근 지정자 private, public, protected로 구분함


class BankAccount {
private:
    int balance;  // 외부 접근 불가

public:
    void deposit(int amount) {
        balance += amount;
    }

    int getBalance() {
        return balance;
    }
};

캡슐화를 통해 데이터 보호 및 함수 중심의 접근 유도 가능


2. 상속 (Inheritance)

기존 클래스(부모 클래스)의 속성과 기능을 물려받아 새로운 클래스(자식 클래스)를 정의할 수 있음


class Animal {
public:
    void eat() {
        cout << "먹는다" << endl;
    }
};

class Dog : public Animal {
public:
    void bark() {
        cout << "멍멍" << endl;
    }
};

DogAnimal의 모든 public 함수를 사용할 수 있음

접근 수준 정리

지정자 자식 클래스에서 접근 외부에서 접근
public O O
protected O X
private X X

3. 다형성 (Polymorphism)

같은 이름의 함수라도 객체의 종류에 따라 다르게 동작하도록 만드는 개념
대표적으로 가상 함수(virtual)를 통해 구현함


class Animal {
public:
    virtual void sound() {
        cout << "동물 소리" << endl;
    }
};

class Cat : public Animal {
public:
    void sound() override {
        cout << "야옹" << endl;
    }
};

class Dog : public Animal {
public:
    void sound() override {
        cout << "멍멍" << endl;
    }
};

void playSound(Animal* a) {
    a->sound();  // 실제 객체 타입에 따라 다른 소리
}

Animal* 타입으로 받아도 virtual 덕분에 실제 객체의 오버라이딩된 함수가 호출됨 → 런타임 다형성


4. 요약

  • 캡슐화: 접근 지정자를 사용해 데이터 보호함
  • 상속: 기존 클래스를 확장하거나 재사용함
  • 다형성: 같은 함수 이름이 객체 종류에 따라 다르게 동작함 (virtual/override)

객체지향 프로그래밍(OOP)의 핵심은 "유지보수 쉬운 확장 가능한 구조" 만들기임

'코딩 > c++' 카테고리의 다른 글

C++ 기본 문법(7)  (0) 2025.06.02
C++ 기본 문법(6)  (0) 2025.06.02
C++ 기본 문법(5)  (0) 2025.06.02
C++ 기본 문법(4)  (0) 2025.06.02
C++ 기본 문법(3)  (0) 2025.06.02