반응형
- 기존 객체 속성을 물려받아 새로운 객체를 만든다.
- 동물
ㄴ 개, 고양이, 닭, 말, 토끼 등
- 여행
ㄴ 해외, 국내, 1박 2일, 당일치기
- 물려주는 부모 역할의 객체를 "기반(Base) 클래스"라 하고,
물려받는 자식 객체를 "파생(Derived) 클래스"라 한다.
① 파생 클래스명 (자식)
② 기반 클래스명 (부모)
③ 상속권한 명시자
; 기반클래스로부터 상속받는 멤버들의 파생클래스에서의 접근권한 결정
→ 기반 클래스 멤버는 파생 클래스에 모두 상속되지만,
기반클래스의 private멤버는 파생클래스에서 접근할 수 없다
→ 상속권한 명시자 관점에서 부모(기반) 클래스를 어떻게 상속하는지 살펴보자.
class Base
{
int id;
protected:
char name;
public:
void sub() {};
};
class Derived : public Base
{
protected:
char name;
public:
void sub();
};
int main()
{
Derived d;
d.sub();
d.name = 'A'; // error (protected 영역에 있기 때문에 외부에서 호출 X)
}
- 기반 클래스의 protected와 public 권한의 멤버는
파생 클래스에서 별도 접근 권한으로 변경할 수 있다.
class Base
{
int id;
protected:
char name;
public:
void sub() {};
};
class Derived : public Base
{
Base::name; // 기반 protected → 파생 private
protected:
Base::sub; // 기반 private → 파생 protected
public:
Base::id; // error (기반 클래스에서 private 멤버이기 때문에 접근 불가)
};
- 상속 관계 모델링은 자식들이 공통적이거나 추상적인 속성을 부모(기반)클래스에.
자식(파생) 클래스에 구체적인(Concrete) 내용을 갖는 IS - A 관계(Relationship)이다.
class Base {
// … (보편적인 Code)
};
class Derived : public Base {
// … (구체적인 Code)
};
- Cat, Dog is Animal
- 선생님, 학생, 간호사는 사람이다.
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] protected 생성자(Constructor)란? (2) | 2021.07.04 |
---|---|
[C++] 상속 관계에서 생성자 호출순서와 명시적 호출이란? (2) | 2021.07.04 |
[C++] lower_bound, upper_bound 사용해보기 (0) | 2021.05.16 |
[C++] [STL] Stack (0) | 2021.02.28 |
[C++] [STL] Queue (0) | 2021.02.28 |
댓글