-
윤성우 열혈 C++ 프로그래밍 7장) 상속의 이해(protected, private, public 상속)PROGRAMMING/C++ 2024. 1. 4. 21:13
윤성우님 열혈 C++ 뽀개기는 계속됩니다~ 오늘은 상속에 대해 정리!
(혹시 저작권에 문제가 있다면 수정하겠습니다!! 개인적인 공부용으로 정리함을 알려드립니당)
https://product.kyobobook.co.kr/detail/S000001589147
Person UnivStudent 상위 클래스 하위 클래스 기초(base) 클래스 유도(derived) 클래스 슈퍼(super) 클래스 서브(sub) 클래스 부모 클래스 자식 클래스 컨트롤 클래스(핸들러 클래서) : 기능의 처리를 담당하는 클래스
( ex - Empolyee 클래스를 이용하는 EmployeeHandler)
상속
- 기초 클래스의 멤버까지도 유도 클래스의 객체에 포함
- 유도 클래스의 멤버함수 내에서는 기초 클래스의 private 멤버변수의 직접 접근이 불가능하다!
- 유도 클래스의 생성자는 기초 클래스의 멤버까지 초기화해야 할 의무가 있음
- 유도 클래스의 생성자는 기초 클래스의 생성자를 호출해서 초기화함
- 소멸자도 마찬가지 방법으로 해제된다!
protected
: 평소에는 private과 동일하지만 protected로 선언된 멤버변수는 이를 상속하는 유도 클래스에서 접근이 가능!
아래 예시를 이용해 private, protected, public 상속에 대해 알아보자. (대부분의 상속은 public 상속이다!)
class Base{ private : int num1; protected : int num2; public : int num3; }; class Derived : public or protected or private Base { // };
private 상속
class Derived : public Base{ 접근불가 : int num1; private : int num2; private : int num3; };
protected 상속
class Derived : public Base{ 접근불가 : int num1; protected : int num2; protected : int num3; };
public 상속
class Derived : public Base{ 접근불가 : int num1; protected : int num2; public : int num3; };
상속을 위한 조건 : IS-A의 관계가 성립해야 한다. (상속 관계의 두 클래스는 매우 큰 연관성을 가짐!)
'PROGRAMMING > C++' 카테고리의 다른 글
윤성우 열혈 C++ 프로그래밍 9장) 가상의 원리와 다중상속(멤버함수의 위치, 가상함수 테이블, 가상상속) (0) 2024.01.07 윤성우 열혈 C++ 프로그래밍 8장) 상속과 다형성(virtual 함수, virtual 소멸자, 순수 가상함수, 추상 클래스) (2) 2024.01.06 윤성우 열혈 C++ 프로그래밍 6장) friend와 static 그리고 const (0) 2024.01.03 윤성우 열혈 C++ 프로그래밍 5장) 복사생성자(explicit, 임시객체) (2) 2024.01.02 윤성우 열혈 C++ 프로그래밍 4장) 클래스의 기본(정보은닉, const함수, 이니셜라이져, 생성자, 소멸자, this포인터, self-reference) (2) 2023.12.28