알버트의 개발하는 블로그
C 언어 / C++ 언어 제23강 클래스와 상속 (inheritance) 본문
이번 시간에는 상속에 대해서 배워보겠습니다. 상속이라는 것은 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++에서 제공되는 아주 중요한 기능입니다. 그리고 이 기능은 자바에서도 많이 보게 되는 기능이라고 꼭 눈에 익혀두시고 넘어가는 것을 추천드립니다. 감사합니다.
'프로그래밍 언어 > C & C++' 카테고리의 다른 글
C 언어 / C++ 언어 제25강 재귀 함수 연습 (팩토리얼, 피보나치 수열, 2진수 변환) (0) | 2021.04.30 |
---|---|
C 언어 / C++ 언어 제24강 클래스의 생성자와 소멸자 (0) | 2021.04.30 |
C 언어 / C++ 언어 제22강 클래스의 static (정적) 멤버 변수 (0) | 2021.04.30 |
C 언어 / C++ 언어 제21강 클래스(class)와 클래스 생성자(constructor) 함수 (0) | 2021.04.30 |
C 언어 / C++ 언어 제20강 클래스(class)와 클래스 멤버 함수, 접근 권한 지정자 개념 익히기 (0) | 2021.04.30 |