inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

TextRPG2 몬스터 생성

"'Creature.type' 멤버를 숨깁니다"

767

Stephen Moon

작성한 질문수 1

0

TextRPG2 영상을 쭉 훑고 난 뒤에 제 힘으로 다시 처음부터 작성해보려고 했다가 하나 거슬리는 부분이 있어서 질문드립니다.

// Creature 클래스
class Creature {
  protected CreatureType type;
  // ...
}

// Player 클래스
class Player : Creature {
  protected PlayerType type = PlayerType.NONE;
  // ...
}

위와 같이 각 클래스 타입을 지정하는 줄을 작성을 하니,  Player 클래스의 변수 "type" 부분에 초록색 줄이 그어지며 "CS0108: 'Player.type'은 상속된 'Creature.type' 멤버를 숨깁니다"라는 메세지가 뜹니다.

이것저것 건드려보다가 확인한 결과 Creature 클래스에서  맨 앞의 protected를 지우니까 초록줄이 사라진 것을 확인했습니다.

이 상황에서 protected가 있고 없고의 차이가 무엇인지 헷갈려서 질문드리고 싶습니다.

C#

답변 1

2

Rookiss

사실 protected의 문제는 아니고,
동일한 이름을 두 번 사용한게 근본적인 문제입니다.

CreatureType type에 protected를 안붙이면 기본적으로 private으로 인식되기 때문에
Player 클래스 내부에서는 그 존재를 모르지만,
CreatureType type의 접근 한정자를 public이나 protected로 설정할 경우
자식 클래스인 Player에서도 CreatureType type을 사용할 수 있는 상태가 됩니다.
그런데 그런 상황에서 동일한 이름으로 PlayerType type을 또 만들어줬으니,
type이라는 것이 2가지의 의미를 지닌 셈이 되는거죠.

물론 이럴 경우에 type이 진짜 2가지 의미를 다 갖진 않고
Player한테 더 가까운 PlayerType type으로 사용이 되는데,
반대로 얘기하면 CreatureType type은 Player 내부에서 더 이상 접근할 수 없게 됩니다. (이름이 겹쳤기 때문)
그렇기 때문에 "CreatureType type의 멤버를 숨깁니다"라는 경고 메시지가 뜨는거죠.
의도적으로 그렇게 한 것이라면 앞에 'new'를 붙여서 new PlayerType type로 선언하는 방법이 있습니다.
그런데 굳이 그렇게 할 필요까진 있을까 싶고 
혼동의 여지를 주지 않으려면 동일한 이름을 피해서
creatureType, playerType 등으로 구분해주는 것이 좋습니다.

0

몽몽이 바보다옹~

강의에선 무시하고 진행하신거죠??

Generic에 대한 질문 있습니다.

0

97

2

2022 버전에 커뮤니티 버전이 없는데 2026 버전으로 해도 무관?

0

203

2

다형성 캐시 문제

0

113

3

.

0

71

1

프로퍼티 강의 질문 있습니다.

0

79

1

이후 커리 질문

0

86

1

static

0

91

2

강의에는 새로운 클래스 파일을 생성하면...

0

72

1

생성자의 이름 선언

0

65

1

9:03 Divide(10 , 3) 부분 질문입니다

0

88

1

깃허브 관련 질문 있습니다.

0

239

1

비쥬얼 스튜디오 업데이트가 된건가요..? 매개변수 오류 관련 질문

0

249

1

C# 시리즈 || C++ 시리즈 자료구조 강의에 대한 질문입니다!

0

306

2

Activator 질문있습니다

0

332

1

이넘 타임 선언 질문

0

347

1

Sort 오름차순, 내림차순

0

323

1

질문 있습니다.

0

250

1

팩토리얼 문제

0

271

1

Sort함수 질문있습니다.

0

266

1

다형성 함수 질문 있습니다.

0

221

1

질문이 있습니다.

0

229

1

섹션2 연습문제 질문입니다.

0

214

1

안녕하세요~서버에 대해 질문이 있습니다.

1

284

1

텍스트 색깔이 제 편집기와 달라서 수강에 어려움이 있습니다ㅜㅜ

0

395

1