일반프로그래밍2008. 11. 25. 18:39

클래스 내부에 인터페이스에

public 선언시
 - 외부 접근(O)
 - 상속 받은 클래스에서 접근(O)

protected 선언시
 - 외부 접근(X)
 - 상속 받은 클래스에서 접근(O)

private 선언시
 - 외부 접근(X)
 - 상속 받은 클래스에서 접근(X)


클래스 상속시에는 쉽게 설명하여,,
제한을 한다고 보면 좋을 듯 하다.

노출이 많은 수준을 public, protected, private 순으로 봤을 때

상속 받은 클래스의 인터페이스들을
public 상속은, 최대를 public으로
protected 상속은, 최대를 protected로
private 상속은, 최대를 private로

즉 최상위의 public 함수더라도
protected로 상속 받으면 protected가 된다고 보면 좋겠다.


class CBase
{
public:
 CBase()
 {
 }

 ~CBase()
 {
 }

 void Public()
 {
 }

protected:
 void Protected()
 {
 }

private:
 void Private()
 {
 }

public:
 int m_nPublic;
protected:
 int m_nProtected;
private:
 int m_nPrivate;
};


class CChild : protected CBase
{
public:
 CChild()
 {
  Public();
  Protected();
  //Private();

  m_nPublic = 0;
  m_nProtected = 0;
  //m_nPrivate = 0;
 }

 ~CChild()
 {
 }
};


int main()
{
 CChild Test;
 Test.Public();  // protected로 상속 받은 상태라 -> 에러
 return 0;
}

Posted by 김경문