C++에서 상속과 다형성은 객체 지향 프로그래밍의 핵심 개념 중 하나로,
코드의 재사용성과 유연성을 높이는 데 중요한 역할을 합니다.
이 글에서는 C++에서 상속과 다형성의 개념과 이를 구현하는 방법에 대해 알아보겠습니다
상속 (Inheritance)
상속은 객체 지향 프로그래밍에서 부모 클래스(기본 클래스)의 속성과
동작을 자식 클래스(파생 클래스)가 물려받는 개념입니다.
이를 통해 코드의 중복을 줄이고, 클래스 간의 계층 구조를 만들어 확장성을 높일 수 있습니다.
class Animal {
public:
void sound() {
cout << "Animal makes a sound" << endl;
}
};
class Dog : public Animal {
public:
void sound() {
cout << "Dog barks" << endl;
}
};
위의 예제에서 'Animal' 클래스는 기본적인 동작을 정의하고,
'Dog' 클래스는 'Animal' 클래스를 상속받아 추가적인 동작을 정의합니다.
다형성 (Polymorphism)
다형성은 같은 이름의 메서드가 서로 다른 클래스에서 다른 동작을 할 수 있는 능력을 의미합니다.
C++에서 다형성은 가상 함수(virtual function)를 통해 구현됩니다.
class Animal {
public:
virtual void sound() {
cout << "Animal makes a sound" << endl;
}
};
class Dog : public Animal {
public:
void sound() override {
cout << "Dog barks" << endl;
}
};
class Cat : public Animal {
public:
void sound() override {
cout << "Cat meows" << endl;
}
};
위의 예제에서 'Animal' 클래스의 'sound()' 메서드를 가상 함수로 선언하여,
파생 클래스에서 이를 오버라이딩할 수 있습니다.
이를 통해 다양한 동물 클래스를 만들고,
각각의 동물이 다른 소리를 내도록 할 수 있습니다.
다형성의 활용
void makeSound(Animal* animal) {
animal->sound();
}
int main() {
Dog dog;
Cat cat;
makeSound(&dog); // Dog barks
makeSound(&cat); // Cat meows
return 0;
}
위의 예제에서 'makeSound()' 함수는 'Animal' 포인터를 매개변수로 받아 해당하는 동물의 소리를 출력합니다.
이를 통해 'Dog'나 'Cat' 객체를 전달하여 각각의 소리를 출력할 수 있습니다.
마무리
C++에서 상속과 다형성은 객체 지향 프로그래밍을 효율적으로 활용하는 데 있어서 중요한 개념입니다.
이를 통해 코드의 재사용성과 유지 보수성을 높일 수 있으며,
유연하고 확장 가능한 소프트웨어를 구축할 수 있습니다.
제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀
'Application > 기초' 카테고리의 다른 글
[기초] C++ 생성자와 소멸자 (new, delete) (0) | 2024.04.10 |
---|---|
[기초] C++ 접근 지정자 (private , protected, public) (0) | 2024.04.08 |
[기초] C++ 객체 지향 프로그래밍 (OOP) (2) | 2024.04.02 |
[기초] C++ 파일 입출력 : 기초와 예제 (0) | 2024.04.01 |
[기초] C++ 포인터 (2) | 2024.03.26 |