이제 OOP의 세 가지 주요 특징인 캡슐화, 상속, 다형성 중에 상속에 관해 알아볼게요.
상속은 다른 형식에 정의한 것을 마치 자신에서 정의한 것처럼 만드는 OOP의 특징입니다. 이러한 관계를 UML에서는 일반화 관계라 부르고 삼각형과 실선으로 관계를 표시합니다.
일반화 관계는 “피아니스트는 음악가이다.”처럼 “이다.(is a)”로 나타낼 수 있는 관계입니다. 이 때 음악가처럼 일반적인 클래스를 기반 클래스라 말하며 피아니스트처럼 특수한 클래스를 파생 클래스라 부릅니다.
C++에서 일반화 관계를 표현할 때 파생 문법을 이용합니다. 파생 문법은 파생 클래스를 정의할 때 기반 클래스를 다음처럼 나타냅니다.
class Pianist : public Musician
{
};
파생 클래스를 정의하면 기반 클래스에 정의한 것도 자신의 내부에 정의한 것처럼 멤버를 상속받습니다.
예를 들어 음악가 클래스에서 “연주하다.” 기능을 정의하면 파생 클래스 피아니스트에는 기반 클래스의 멤버를 상속받아 “연주하다.” 기능을 정의한 것처럼 사용할 수 있습니다.
//상속 개요
#include <iostream>
#include <string>
using namespace std;
class Musician
{
public:
void Play()
{
cout<<"딩동댕"<<endl;
}
};
class Pianist:
public Musician //Musician 클래스를 기반으로 파생한 Pianist 클래스 정의
{
};
int main()
{
Pianist *pianist = new Pianist();
pianist->Play();
delete pianist;
return 0;
}
▷ 실행 결과
딩동댕
'언어 자료구조 알고리즘 > 디딤돌 C++' 카테고리의 다른 글
[C++] 32. 형식의 다형성 (0) | 2016.04.25 |
---|---|
[C++] 31. 다형성 개요 (0) | 2016.04.25 |
[C++] 30. 무효화 (0) | 2016.04.25 |
[C++] 29. 접근 지정자 protected (0) | 2016.04.25 |
[C++] 28. 파생 개체의 생성과 소멸 과정 (0) | 2016.04.25 |
26. 캡슐화 최종 실습 - 구체적 구현 (0) | 2016.01.27 |
25. 캡슐화 최종 실습 - 테스트 코드 작성 (0) | 2016.01.27 |
24. 캡슐화 최종 실습 - 멤버 메서드 (0) | 2016.01.27 |
23. 캡슐화 최종 실습 - 멤버 필드 (0) | 2016.01.27 |
22. 캡슐화 최종 실습 - 시나리오 (0) | 2016.01.27 |