728x90

상속과 클래스 관계

- 기본(base) 클래스의 속성을 물려 받는 것

base class <-> derived class

 

base class: 기본 클래스

멤버

 -private

 -protected

 -publie

 

derived class: 드라이브드 클래서 =파생 클래스

 

-기능적인 면

기본 클래스<파생 클래스

 

- 파생 클래스는 기본 클래스의 protected, public멤버 사용 가능

 

참고 사항

-기본 클래스에 대한 관례적인 명칭

 super class:최상위 클래스 , parent class:부모 클래스

-파생 클래스에 대한 관례적인 몇칭

sub class:하위 및 최하위 클래스, chaild class:자식 클래스

 

[형식1] 단일 상속   [접근지정자]:private,protected,public

class Derived:[접근지정자]Base     {

//member list

};

class A {..};

class B : public A {};

 

[형식2] 다중 상속  [접근지정자]:private,protected,public

class Derived:[접근지정자] Base1,[접근지정자] Base2 { };  

{

//member list

};

class A { };

class B { };

class C : public A ,protected B { };

 

 

 

상속: 기존의 과념 -> 기존에 정의해 놓은 클래스의 재활용을 목적으로 만들어진 문법적 요소

새로운 관점으로 상속을 보자!

 

파생 클래스에서 기본 클래스에 대한 접근 권한

- private 상속

* private 멤버     : 사용 불가

* protected         : private로 사용

* public              : private로 사용 

부모 클래스

상위 클래스

기본 클래스

자식 클래스

하위 클래스

파생 클래스

 

* private 멤버  

* protected

*public             

사용 불가

private로 사용

private로 사용 

 

 

 

 

     

예제

class A{

private:

void ShowPrivateA(){cout<<"A private"<<endl;}

protected:

void ShowProtectedA(){cout<<"A protected"<<endl;}

public:

void ShowPublicA(){cout<<"A public"<<endl;}

}; 

class B:private A

{

public:

void Show(){

// ShowPrivateA();     사용 불가

ShowProtectedA();     사용 가능

ShowPublic();            사용 가능

}

};

 

int main(){

B Test;

Test.Show();

return 0;

}

 

 

- protected 상속

* private 멤버     : 사용 불가

* protected         : protected로 사용

* public              : protected로 사용 

 

- public 상속

* private 멤버     : private로 사용

* protected         : protected로 사용

* public              : protected로 사용 

 

예제