[C#] 6.1.1 protected

파생 형식에서도 기반 형식에서 private으로 접근 지정된 멤버는 보이지 않으므로 자신에게 포함된 멤버지만 접근할 수 없습니다.

기반 형식의 private으로 접근 지정한 멤버에 파생 형식에서 접근 불가
[그림 22] 기반 형식의 private으로 접근 지정한 멤버에 파생 형식에서 접근 불가

 형식 외부에서는 접근을 막고 파생된 형식에서는 접근할 수 있게 하려면 protected로 접근 지정하면 됩니다. 하지만 멤버 필드는 접근 지정을 private으로 하시고 파생된 형식에서 접근할 수 있게 하려면 멤버 속성을 통해 접근할 수 있게 하는 것이 바람직합니다.

▶ 멤버 속성을 통해 멤버 필드에 접근

class Man
{
    int hp = 100; //prviate으로 접근 지정(디폴트 접근 지정) 

    protected int Hp //파생 형식에서 접근 가능
    {
        get
        {
            return hp;
        }
        set
        {
            hp = value;
        }
   }
   internal void Walk()
   {
        Console.WriteLine("걷다.");
        Hp += 2;
    }
}