인프런 커뮤니티 질문&답변
다형성 부분에 질문있습니다.
해결된 질문
작성
·
212
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
Rookiss
지식공유자
https://stackoverflow.com/questions/1334254/how-can-i-call-the-base-implementation-of-an-overridden-virtual-method
요약하면 C#에선 그런 상황을 설계적인 결함으로 간주하기에
'정상적'인 방법으로는 그렇게 할 수가 없습니다.
위에 찾으신 방법은 잘못되었습니다. (새로운 Player 객체를 만들기 때문)





