알버트의 개발하는 블로그

C 언어 / C++ 언어 제23강 클래스와 상속 (inheritance) 본문

프로그래밍 언어/C & C++

C 언어 / C++ 언어 제23강 클래스와 상속 (inheritance)

알버트 2021. 4. 30. 09:50

 

이번 시간에는 상속에 대해서 배워보겠습니다. 상속이라는 것은 c++에서 제공하는 클래스와 연관이 깊은 기능입니다. 사실 상속처럼 객체와 연관이 깊은 부분은 자바같은 객체지향 프로그래밍 언어에서 더 많이 쓰이긴 합니다. 하지만 c++에서도 제공하는 기능이랍니다. c++에서 제공하는 클래스와 상속에 대해서 짧게 짚고 넘어가보도록 하겠습니다.

 

 

 

상속이란?

상속이란, 말 그대로 부모의 재산을 자식이 그대로 갖다 쓴다는 것을 말합니다. 부모님이 돌아가시면 자식이 그 재산을 물려받는 것처럼, 부모의 재산(변수, 함수) 등을 자식이 그대로 갖다 쓸 수 있는 것을 말합니다. 그래서 자식 클래스는 부모 클래스의 재산을 그대로 갖다 쓸 수 있습니다.

즉, 상속이란 부모 클래스에서 정의한 모든 멤버 변수와 함수를 자식 클래스에서 별도로 정의하지 않아도 정의한 것처럼 사용할 수 있는 것을 말합니다.

 

 

 

 

상속을 선언하는 방법

class 자식클래스명 : 상속권한지정자 부모클래스명 {....}

출처 입력

이와 같이 선언해주면 부모클래스명의 변수와 함수를 자식클래스가 그대로 갖다 쓸 수 있답니다. 하지만, 모두 다 갖다 쓸 수 있는 것은 아닙니다. 상속권한지정자에 따라서 내용이 달라지는데요. 상속 권한 지정자는

private : 부모 클래스에서 지정된 접근 권한에 관계 없이 무조건 private로 상속된다.

protected : 부모 클래스에서 지정된 접근 권한이 private이면 private로 나머지는 protected로 상속된다.

public : 부모 클래스에서 지정된 접근 권한 그대로 상속된다.

이렇게 3가지 종류가 있습니다. 부모 클래스에서 private로 선언된 것은 그대로 갖다 쓸수 없지만 public으로 선언된 것은 그대로 갖다 쓸 수 있습니다.

 

 

 

 

상속 예제

이제 간단한 예제를 통해서 부모 클래스의 변수를 어떻게 자식 클래스가 쓸 수 있는지 알아보겠습니다.

대표사진 삭제

사진 설명을 입력하세요.

메인 함수 위에서 클래스 2개를 만들었는데요. class Child : public Parent {...}

이 부분을 선언해서 Parent클래스를 Child클래스가 상속받을 수 있도록 해주었습니다.

이제 Child클래스 안에서 Parent클래스의 age변수와 name변수에 접근할 수가 있습니다. Child생성자를 통해서 입력받은 age와 name이 Parent클래스의 age와 name으로 저장되는 것을 알 수있습니다.

 

 

 

 

 

출력을 해보면? child생성자를 통해서 정상적으로 실행될 것입니다. 한번 실행해볼까요?

 

 

 

이처럼 부모로부터 상속받은 변수 age와 name을 자식 클래스가 그대로 출력해주는 것을 알 수 있습니다.

이처럼 상속은 c++에서 제공되는 아주 중요한 기능입니다. 그리고 이 기능은 자바에서도 많이 보게 되는 기능이라고 꼭 눈에 익혀두시고 넘어가는 것을 추천드립니다. 감사합니다.