• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

접근한정자에 대해서 질문있어요

20.11.18 00:01 작성 조회수 189

1

부모클래스에서 생성자나 변수에 protected를 붙이면 물려받은 자식클래스에서 접근할수있는데

부모클래스에서 함수앞에 protected를 붙이면 왜 물려받은 자식클래스에서 접근할수없는건가요..?

가르쳐 주시면 감사하겠습니다.

답변 4

·

답변을 작성해보세요.

2

그건 이미 Knight와 Player 클래스 밖으로 빠져 나온 상황이기 때문입니다.
사실 main함수도 유심히 보면 class Program 안에 속해 있습니다.
Program과 Knight/Player는 어떤 상속 관계도 아니니까
protected 계열 변수나 함수 호출 모두 막히는게 정상입니다.

1

아닙니다!
함수도 (멤버변수와 마찬가지로)  protected이라면
물려받은 자손들도 그 함수를 내부에서 사용할 수 있습니다.

0

오유리님의 프로필

오유리

질문자

2020.11.18

답변 감사합니다!!

객체지향이 뭔가 많이 어렵네요..ㅠㅠ

답변 계속 곱씹어보면서 열공하겠습니다~!!

0

오유리님의 프로필

오유리

질문자

2020.11.18

아..질문을 잘못했었어요..죄송합니다.

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의 인스턴스니깐 사용될것같은데..왜 안되는건가요..?