| 부모 클래스의 속성 | 상속 속성 | 상속 시 속성 | 
| private | private | private | 
| private | protected | private | 
| private | public | private | 
| protected | private | private | 
| protected | protected | protected | 
| protected | public | protected | 
| public | private | private | 
| public | protected | protected | 
| public | public | public | 
위 표와 같이 private를 어떤 속성으로 상속하든 결과는 private가 되며,
protectec는 상속되는 속성에 따라 private 또는 protected가 된다.
그리고 public 또한 상속되는 속성에 따라 private, protected, public이 됨을 알 수 있다.
이는 마치 교집합과 같은 성질을 갖는데, 대충 다음과 같이 범위를 표현할 수 있다.
private << protected << public
private는 범위가 가장 작기 때문에, 어떤 속성을 만나던 private가 될 수 밖에 없다.
각자가 위 속성에 대해서 교집합을 만들어 보면 상속 시 어떤 속성으로 변하는지 쉽게 파악이
될 것이다.
앞으로 우리가 MFC로 코딩을 하다 보면 대부분의 상속은 public 상속임을 알 수 있는데,
그렇다면 위 표에서 public으로 상속하는 3가지 경우만 잘 알면 될 것이다.
추가로 private, protected, public에 대해서 다음 표를 갖고 설명해 보면,
| Base 클래스속성 | 클래스내에서 접근 | 객체에서 접근 | 상속받은 파생 클래스내에서 접근 | 상속받은 객체에서 접근 | 
| private | 가능 | 불가능 | 불가능 | 불가능 | 
| protected | 가능 | 불가능 | 가능 | 불가능 | 
| public | 가능 | 가능 | 가능 | 가능 | 
private 멤버는 의미 그대로 아주 사적인 멤버이다. 사적인 멤버이기 때문에 현재 클래스에서만
사용하고 상속조차 해주지 않는다. 아빠가 아들한테 상속해 주지 않는 것.. 머 속옷 같은거..ㅋㅋ
protected 멤버는 현재 객체만 놓고 보면, private 멤버와 다를 바 없다. 하지만 상속을 할 때는
private와 다르게 작용한다. 아빠의 차가 있는데, 이 차를 아들한테 상속해 주고 싶다.
차는 보통 남한테 잘 빌려주지 않으니까 private나 protected로 해야 하는데, private일 경우에
아들한테 차를 상속해주면 아들은 차를 탈 수가 없다. 그러므로 차를 protected로 만들어 놓고
상속을 해주면, 아들만 탈 수 있는 것이 되는 것이다. 아들은 이 차를 빌려줄 수 있을까?
빌려 줄 수 없다. 객체의 외부에서는 접근할 수 없기 때문이다.
public 멤버는 현재 객체만 사용하든 상속을 하든 아무 관계가 없다. 그냥 아무나 쓰면 되고,
아들한테 상속해 주면 아들도 쓰고, 아들이 친구한테도 빌려주고 그럴 수 있는 멤버들이다.
예를 들어 아버지가 책이 한 권 있고, 아들한테 상속해주고, 아들은 또 친구한테 줄 수 있는
그런 존재가 public이다.
'Computer Languages > C | C++' 카테고리의 다른 글
| string::getline (0) | 2010.11.19 | 
|---|---|
| string을 char로 취급하기 (0) | 2010.10.21 | 
| [펌] new와 delete (0) | 2010.10.11 | 
| 포인터 개념 (0) | 2010.10.11 | 
| 3x3 행렬의 곱 (0) | 2010.10.08 |