인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

강동훈님의 프로필 이미지
강동훈

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문

TextRPG2 몬스터 생성

생성자 관련 질문입니다.

해결된 질문

작성

·

162

0

이번 코드에서 player나 monster 생성자 옆에 :base(Creature type) 을 써주는 이유가 무엇인가요?

플레이어의 경우에는 플레이어의 생성자의 내용을 그대로 자식이 쓰게 하기 위해서 :base(PlayerType.직업) 이런 식으로 해줬던것 같은데 플레이어의 상속자에는 왜 부모인 크리쳐의 상속자를 붙여준 것인지 알고 싶습니다.

java에서 부모의 생성자를 반드시 생성해야 해서 super() 등을 사용하던 것과 비슷한 이유로 자식 클래스 생성자에 부모 생성자를 붙여줘야 하는 건가요?

오크를 생성한다고 치면 몬스터의 생성까지는 마쳐졌지만 크리쳐의 생성자를 안 붙이면 그 부모인 크리쳐에서 타입이 정해지지 않아서 오류가 생긴다는 등에 문제가 생기는 걸까요?

답변 2

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

base를 이용해 부모의 생성자를 지정해서 호출해주는 것인데
Knight, Archer 등의 부모님은 Player이고
Player의 부모님은 Creature이니
Knight,Archer 등은 Player 생성자를,
Player에서는 Creature의 생성자를 호출하는 것입니다.

반드시 채워야 하는 정보를 생성자를 통해 전달해주고 있는데
예제에서는 Creature는 Monster/Player 여부를 구분해야 하고
Player는 Knight/Archer 등의 플레이어 타입을 구분하고 있으니
생성자를 통해 전달해준겁니다.

별도로 부모 생성자를 지정해서 호출하지 않으면
부모의 기본 생성자가 기본적으로 호출됩니다.

0

강동훈님의 프로필 이미지
강동훈
질문자

답변 감사합니다.

강동훈님의 프로필 이미지
강동훈

작성한 질문수

질문하기