개발 Study

#29. class 상속

HYuk 2021. 5. 12. 15:21
728x90

#class 상속이란

class 에서 상속은

함수나 변수등, 공통적으로 사용할 것이 있을 때,

부모클래스에서 자식클래스로 상속을 시키면 부모클래스에 있는 것들을

자식클래스에서 사용 할 수 있다.

-> 각 클래스가 공통으로 필요한 것이 있을 때 부모클래스에 공통적인 것을 몰아 넣고

자식클래스1, 자식클래스2 등등 에 상속시켜주면 좀 더 편하게 할 수 있다.

 

상속 방법은

class 클래스명 옆에 :(콜론)을 붙이고 부모클래스명을 붙이면 된다.

 

ex) class CChild : CParents

{

};

 

이때 콜론 뒤에 상속 속성을 쓸 수 있는데,

public / protected / private가 있다.

 

각 속성에 따라 자식클래스에서 사용법이 달라진다.


class CChild : private CParents

로 상속 받았을때

CParents에 있는 모든 멤버는 private 속성으로 상속 받는다.

이때, CParents에 있는 private 멤버는 접근이 불가하다.

예를 들면

class CParents

{

private:

int a;

public:

int b;

protected:

int c

}

의 부모함수를

class CChild : private CParents 로 상속 받았을 때,

int a 는 접근이 불가능하고

int b 와 int c는 CChild에서 private 속성으로 상속 받게 된다.


class CChild : protected CParents

로 상속 받았을때,

CParents에 있는

int a 는 접근이 불가능하고

int b와 int c는 protected 속성으로 상속 받게 된다.


class CChild : public CParents

로 상속 받았을때,

CParents에 있는

int a 는 접근이 불가능하고

int b는 public

int c는 protected 속성으로 받게된다.


#상속을 받을 때 판단

(자식클래스) is-a (부모클래스) -> 말이 되면 상속

is-a 관계가 어색하면 has-a 관계로 해보면 된다.

(부모클래스) has-a (자식클래스) -> 말이 되면 상속

 

상속은 ,로 다중상속이 가능하다.

 

같은 함수명을 쓰는 부모클래스들을 상속받을때는 모호성이 되기 때문에

이때는 멤버로 포함시켜 .연산자로 해당함수를 불러오면 된다.

728x90