강의

멘토링

로드맵

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

포도님의 프로필 이미지
포도

작성한 질문수

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

다형성

3:15 Line 39 player.Move();에 mage가 전달 안된 이유

작성

·

282

0

EnterGame(mage)로 분명 전달했는데

player.Move();가 Mage 클래스의 Move()가 아닌 Player 클래스의 Move()가 작동하는 이유가 궁금해요.

mage를 분명 전달했는데 player가 mage로 받아들이지 못하는 이유..

혹시 자식->부모클래스로 형변환은 강제형변환을 해줘야 하는 것 때문에 mage를 받지 못하고 player 그대로를 인식해서 player의 move()가 호출된건가요?

그리고 override를 사용하면 런타임에 타입을 자동으로 체크해준다 하셨는데 그게 자동 형변환이 되는거라고 보면 되나요?

퀴즈

객체지향 프로그래밍에서 '클래스'와 '객체'의 관계를 가장 잘 설명하는 것은 무엇일까요?

클래스는 객체의 실제 데이터입니다.

객체는 클래스를 만들기 위한 설계도입니다.

클래스는 객체의 설계도이며, 객체는 설계도로부터 생성된 인스턴스입니다.

클래스와 객체는 완전히 동일한 개념입니다.

답변 1

0

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

네 맞습니다.
EnterGame(Player player); 는 인자로 Player를 받아주기 때문에
설령 mage를 전달했더라도 그 객체를 player로 인식하는 것입니다.
실제로 Mage도 Player이기도 하니 틀린 말은 아니죠.
가상 함수를 사용하면 실제 원본 클래스가 무엇으로 만들어졌는지에 따라
override 된 함수를 호출해줍니다.

포도님의 프로필 이미지
포도

작성한 질문수

질문하기