인프런 커뮤니티 질문&답변
접근한정자에 대해서 질문있어요
작성
·
340
1
부모클래스에서 생성자나 변수에 protected를 붙이면 물려받은 자식클래스에서 접근할수있는데
부모클래스에서 함수앞에 protected를 붙이면 왜 물려받은 자식클래스에서 접근할수없는건가요..?
가르쳐 주시면 감사하겠습니다.
퀴즈
TextRPG2에서 Creature 클래스를 도입한 주된 이유는 무엇일까요?
플레이어와 몬스터를 구별하기 위해
반복되는 코드(HP, 공격력 등)를 재사용하기 위해
파일을 분리하여 관리하기 위해
플레이어 타입(기사, 궁수 등)을 정의하기 위해
답변 4
2
그건 이미 Knight와 Player 클래스 밖으로 빠져 나온 상황이기 때문입니다.
사실 main함수도 유심히 보면 class Program 안에 속해 있습니다.
Program과 Knight/Player는 어떤 상속 관계도 아니니까
protected 계열 변수나 함수 호출 모두 막히는게 정상입니다.
1
0
0
아..질문을 잘못했었어요..죄송합니다.
class Player
{
protected PlayerType type;
protected int hp;
protected int attack;
protected int GetHp() { return this.hp; }
protected void SetInfo(int hp, int attack)
{
this.hp = hp;
this.attack = attack;
}
}
class Knight : Player
{
public Knight()
{
SetInfo(100, 10);
}
}
이렇게 자식클래스에서는 함수사용이 가능한데
main함수안에
Knight knight = new Knight();
knight.GetHp();
이렇게하면 보호수준에러가 뜨더라구요..
Knight는 Player에게 상속받고 knight는 Knight의 인스턴스니깐 사용될것같은데..왜 안되는건가요..?





