• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

다형성 부분에 질문있습니다.

21.11.29 14:19 작성 조회수 103

0

class Player
{
public virtual void Move()
{
Console.WriteLine("Player");
}
}
class Knight : Player
{
public override void Move()
{
Console.WriteLine("Knight");
}
}
class SuperKnight : Knight
{
public override void Move()
{
base.Move();
Console.WriteLine("SuperKnight");
}
}
 
여기서 SuperKnight부분에 base를 사용하니 Knight의 Move를 실행하던데 혹시 여기서 Player의 Move를 사용할려면 어떻게 하면되나요?
 
현재 찾은 방법은
Player player = new Player();
public override void Move()
{
player.Move();
Console.WriteLine("SuperKnight");
}
이런 식으로 하는 것인데 다른 간단한 방법이 더 있는지 궁금합니다

답변 1

답변을 작성해보세요.

0

https://stackoverflow.com/questions/1334254/how-can-i-call-the-base-implementation-of-an-overridden-virtual-method

요약하면 C#에선 그런 상황을 설계적인 결함으로 간주하기에
'정상적'인 방법으로는 그렇게 할 수가 없습니다.
위에 찾으신 방법은 잘못되었습니다. (새로운 Player 객체를 만들기 때문)