새소식

🏫 School/[23-2] 객체지향프로그래밍

[C++] Inheritance (상속)

  • -

Inheritance (상속)

상속 기본 flow chart

- 부모 class : Base 클래스, Parent 클래스, Super 클래스, Existing 클래스와 같은 의미
- 자식 class : Derived 클래스, Child 클래스, Sub 클래스 / 부모 class에 의해 파생된 새로운 class / 부모의 모든 데이터 & 함수를 갖음
- "is-a relationship" : Derived 클래스 is a Base 클래스 (역은 성립하지 않음) / 부분집합으로 이해하면 편리

[Grammar]

class Base {
private:
public:
};

class Derived : public Base {
privatd:
public:
};

[protected 타입]

- 외부에서 protected 데이터나 함수에 접근할 수 없음
- derived class 에서는 base class의 protected 정보가 private 정보로 동작

[Multiple base class]

class Derived: public Base1, public Base2, public Base3 {
};

[Reusability & Specialization]

- 기존에 생성되었던 class를 이용하여 더 많은 동작을 하는 새로운 class를 생성할 수 있음 / 재사용한다는 점에서 효율적

Overriding

- 이름과 입력값이 모두 같으나, 그 기능이 다를때 사용
- 기존 class의 virtual function을 override하도록 지정

[Virtual, Override]

- Virtual : Base class에 사용되는 지정자이며, 상속받을 파생 class
- Override : Base class의 virtual method를 derived class에서 동작을 정의하기 위해 사용됨

[Static Binding]

- Compile시 어떤 method를 호출할 지 미리 결정된 것을 의미 & 변경될 수 없음

[Dynamic Binding]

- Compile시 어떤 method를 호출할 지 미리 결정되지 않음 & 상황에 맞게 결정/변경
- Base class의 virtual로 지정되어 derived class에서 override되는 함수만 사용 가능

Binding flow chart

Polymorphism

- 다양한 derived class 사용 가능
- 프로그램의 응용에 필수적인 내용

Header File

- main 함수가 너무 밑으로 내려가 코드의 전체적인 구조를 파악할 수 없는 상황 방지
- class로 정의하는 함수들을 hpp 파일에 넣고 큰 틀로 작동하는 것들을 main함수에 넣어 코드 길이 줄임

'🏫 School > [23-2] 객체지향프로그래밍' 카테고리의 다른 글

[C++] Exception Handling  (2) 2023.12.03
[C++] Generic Programming  (4) 2023.12.03
[C++] Software Component (2)  (0) 2023.11.16
[C++] Software Component (1)  (0) 2023.11.16
[C++] Lab #01&02  (0) 2023.10.20
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.