728x90
[Do it C++ 완전정복_ 239~242p]
상속성 (Inheritance)
- 기존 클래스(부모/기반 클래스)의 속성과 기능을 새로운 클래스(자식/파생 클래스)가 물려받아 재사용하는 것을 말한다.
- 자식 클래스는 부모 클래스의 멤버(변수, 함수)를 그대로 사용할 수 있고, 필요에 따라 기능을 추가하거나 재정의(오버라이딩) 할 수도 있다.
상속 선언 방법
class 자식클래스 : 접근지정자 부모클래스 { ... };
#include <iostream>
using namespace std;
class Parent {
public:
void show() { cout << "Parent" << endl; }
};
class Child : private Parent { // private 상속
public:
void display() { show(); } // 내부에서는 접근 가능
};
int main() {
Child c;
// c.show(); 불가 (private 상속으로 외부 접근 불가)
c.display(); // 가능 (자식 클래스 내부에서는 가능)
}
상속 원칙 - 리스코프 치환 원칙 (LSP)
자식 클래스는 언제나 부모 클래스로 대체될 수 있어야 한다
→ 부모 클래스의 참조나 포인터로 자식 객체를 다뤄도 정상적으로 동작해야 함
다중 상속
하나의 자식 클래스가 둘 이상의 부모 클래스를 동시에 상속받는 것을 말한다.
class A { public: void funcA() { cout << "A" << endl; } };
class B { public: void funcB() { cout << "B" << endl; } };
// 다중 상속
class C : public A, public B {
public:
void funcC() { cout << "C" << endl; }
};
int main() {
C obj;
obj.funcA(); // A의 멤버 사용
obj.funcB(); // B의 멤버 사용
obj.funcC(); // 자신의 멤버 사용
}
다중 상속 주의사항
여러 부모 클래스에 동일한 이름의 함수나 멤버가 있을 경우 컴파일러가 어느 쪽을 호출해야 하는지 판단하지 못한다.
→ 인터페이스(순수 가상 클래스) 형태로 다중 상속을 사용할 것
'C++ > C++ 문법' 카테고리의 다른 글
| C++ 다형성 개념과 다형성 구현 (팩토리 클래스, 오버라이딩) (0) | 2025.10.14 |
|---|---|
| C++ 바인딩 (Binding) (0) | 2025.10.14 |
| C++ 추상화,캡슐화 개념 및 접근 지정자 (0) | 2025.10.14 |
| C++ 기본 클래스(class)와 인스턴스(instance) (0) | 2025.10.13 |
| C++ 예외 처리 (try-catch) (0) | 2025.10.13 |