C++ 상속

SangHoon Lee·2020년 4월 9일
2

안녕하세요 C++을 공부하고 있는 대학생입니다.
상속에 대하여 다시 상기시키고자 정리를 해 보았습니다.

C++ 상속이란?
기존에 정의되어 있는 클래스의 모든 멤버 변수와 멤버 함수를 물려받아, 새로운 클래스를 작성하는 것

*기존에 정의되어 있던 클래스를 기초 클래스(base class) 또는 부모 클래스(parent class), 상위 클래스

클래스 상속의 장점?

1. 기존에 작성된 클래스의 재활용.

2. 공통적인 부분은 기초 클래스에 미리 작성하여, 파생 클래스에서의 중복 방지.

Class 파생클래스명 : 접근지정자 기초클래스명, 접근지정자 기초클래스명 (다중 상속)

접근지정자는 기초 클래스의 멤버를 사용할 수 있는 파생 클래스의 접근 제어 권한을 설정합니다. 접근지정자를 생략하면 파생 클래스의 접근 제어 권한은 private을 기본으로 설정됩니다. 또한 쉼표(,)를 이용하여 상속받을 기초 클래스를 여러 개 명시할 수 있습니다.
상속받는 기초 클래스가 하나이면 단일 상속, 여러 개를 상속받으면 다중 상속이라고 합니다.
Class baseClass // 기초 클래스
{
Private:
Int a;
Public:
Int b;
Protected:
Int c;
};

Class subClass : public baseClass // Class 파생 클래스명 : 접근지정자 기초 클래스명
{
Public:
subClass(int a0, int b0, int c0){
a = a0; //
b = b0;
c = c0;
}
};

Int main(){
baseClass A = baseClass(1,2,3,); //
A.a; //
A.b;
A.c; //
Return 0;
}

파생 클래스의 특징
1. 파생 클래스는 반드시 자신만의 생성자를 작성해야 합니다.
2. 파생 클래스는 기초 클래스에 접근할 수 있는 모든 멤버 변수들이 저장됩니다.
3. 파생 클래스는 기초 클래스의 접근할 수 있는 모든 멤버 함수를 사용할 수 있습니다.
4. 파생 클래스는 필요한 만큼 멤버를 추가할 수 있습니다.

접근지정자

접근 지정자로는 public, private, protected 세가지가 있습니다.

기초 클래스 정의부에서 public으로 정의된 속성에 대해서는 파생 클래스 정의부에서 접근이 가능하며 파생클래스의 객체를 통해서도 접근이 가능합니다.

Private로 정의된 속성에 대해서는 파생 클래스 정의부에서 접근이 불가능하며, 객체를 통해서도 접근이 불가능합니다. 또한 기초 클래스의 객체를 통해서도 접근이 불가능하며, 오직 기초 클래스의 정의부 내에서만 접근이 가능합니다.

Protected로 정의된 속성에 대해서는 파생 클래스 정의부에서 접근이 가능하지만 기반 클래스나 파생클래스의 객체를 통해서는 접근이 불가능합니다.

어려운 내용은 아니지만, 중요한 내용이므로 다시한번 상기시키고자 하여 간단하게 정리를 해 보았습니다.

profile
C++ 공부하고있는 대학생입니다.

0개의 댓글