클래스 내부에 인터페이스에
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;
}