언어/C++

7. 상속(Inheritance)의 이해

에린_1 2023. 1. 26. 00:06
728x90
  • 기능의 처리를 실제로 담당하는 클래스 - ‘컨트롤(Control) 클래스’ 또는 ‘핸들러(Handler) 클래스’

 

  • A 클래스가 B 클래스를 상속하게 되면, A 클래스는 B 클래스가 지니고 있는 모든 멤버를 물려받는다. 즉, A 객체는 A 클래스에 선언된 멤버 외 B 클래스에 선언 된 멤버도 존재하게 된다.

 

 

A 클래스

상위 클래스

기초(Base) 클래스

슈퍼(Super) 클래스

부모 클래스

 

 

 

B클래스

하위 클래스

유도(Derived) 클래스

서브 클래스

자식 클래스

 

 

  • 기초와 유도라는 말을 자주 사용한다.

 

  • 유도 클래스의 객체생성 과정에서 기초 클래스의 생성자는 100% 호출된다

 

  • 유도 클래스의 생성자에서 기초 클래스의 생성자 호출을 명시하지 않으면, 기초 클래스의 void 생성자가 호출된다.

 

  • 클래스 멤버는 해당 클래스의 생성자를 통해서 초기화해야 한다.

 

  • 유도 클래스의 객체가 소멸될 떄는, 유도 클래스의 소멸자가 실행되고 난 다음에 기초 클래스의 소멸자가 실행된다.

 

  • 기초 클래스와 이를 상속하는 유도 클래스 사이에서도 ‘정보은닉’은 지켜지는 게 좋다.

 

  • 상속을 위한 기본 조건인 IS-A 관계의 성립
    • 기초 클래스와 유도 클래스간에 IS-A 관계가 성립해야 한다.
      • IS-A는 추상화(형식이나 클래스와 같은)들 사이의 포함 관계를 의미하며, 한 클래스 A가 다른 클래스 V의 서브임을 이야기한다.
      • 무선 전화기는 일종의 전화기이다
      • 노트북 컴퓨터는일종의 컴퓨터이다

 

 

  • HAS-A 관계도 상속의 조건은 되지만 복합 관계로 이를 대신하는 것이 일반적이다.

 

  • 상속으로 묶인 두 개의 클래스는 강한 연관성을 띤다
728x90

'언어 > C++' 카테고리의 다른 글

가상(Virtual)의 원리와 다중상속  (0) 2023.01.31
8. 상속과 다형성  (0) 2023.01.26
6. 클래스의 완성  (0) 2023.01.19
5. 연산자 다중정의  (0) 2023.01.17
4. 복사 생성자 & 임시객체  (0) 2023.01.17