상속은 물려준다는 의미를 가진다. 무엇을 물려주는지 생각해보면 우리는 클래스를 물려준다.
예를 들어 더 큰 개념을 가진 클래스를 만들었다고 생각해보자. 클래스 동물을 만들어 놓았을 때 우리는 인간 이라는 클래스를 만든 다고 생각해보자.
인간은 동물의 범주에 들어가니깐 동물이 가지는 기능을 인간도 가질 것이다. 이럴 때 우리는 상속을 사용한다. 귀찮게 동일한 기능을 가지는 것을 또 만드는 것이 아니라 가져와서 쓰는 것이다.
클래스와 관련지어 더 생각해보면 우리가 새로운 클래스를 만들 때 우리는 다른 클래스로부터 가져와서 그 클래스를 기반으로 새로운 클래스를 생성한다.
이때 기반이 되는 클래스를 Base class / parent class 라고 하고 새로운 클래스를 Derived class / chlid class라고 한다.
이 자식 클래스가 가지는 특징은 다음과 같다.
• Member variables
• Member functions
• Can then add additional member functions
and variables
선언은 다음 그림과 같이 한다고 한다.
상속은 OOP의 핵심적인 개념이라고 한다. 왜냐하면 코드를 재 사용할 수 있고, 어떤 개념을 추상화 시킬 수 있으며 다형성을 지니기 때문이다. 일단 큰 개념을 만든 후에 파생되는 하위 개념에 대한 클래스는 큰 개념의 클래스에서 상속한 후에 하위 개념에 대한 기능만 추가해주면 되는 것이다.
예를 한번 살펴보자.
이 그림에서 학생은 사람이라는 개념을 상속 받는다. 왜냐하면 학생도 사람이기 때문이다.
생성자와 소멸자는 상속되지 않는다. 하지만 자식 클래스 생성자에서 불러올 수 있다고 한다. 부모 클래스의 생성자는 멤버 변수로 초기화 되어야만 한다.