C Sharp Rookiss Part1 기초 프로그래밍 입문 : 다형성
🙇♀️다형성
- 형태가 다양하다
- OOP(은닉성/상속성/다형성)중 하나
🪐virtual, override
- 부모는 virtual
- 자식은 override
- override한 함수는 세세한 변화 가능
- 자식은 override
override한 함수가 없다면 부모의 함수가 실행됨 base의 함수가 실행될 때 자식의 부모만 실행 됨
- 자식의 부모의 함수에 base함수가 있다면 부모의 부모까지
전체코드
namespace CSharp
{
class Player
{
protected int hp;
protected int attack;
public virtual void Move()
{
Console.WriteLine("Player 이동!");
}
}
class Knight : Player
{
public override void Move()
{
base.Move(); // Player 이동! 출력
Console.WriteLine("Knight 이동!");
}
}
class SuperKnight : Knight
{
public override void Move()
{
base.Move(); // Knight 이동! 출력
Console.WriteLine("SuperKnight 이동!");
}
}
class Mage : Player
{
public int mp;
public override void Move()
{
Console.WriteLine("Mage 이동!");
}
}
class Program
{
static void EnterGame(Player player)
{
player.Move();
Mage mage = player as Mage;
if (mage != null)
{
mage.mp = 10;
}
}
static void Main(string[] args)
{
Knight knight = new Knight();
SuperKnight sKnight = new SuperKnight();
Mage mage = new Mage();
sKnight.Move(); // Player 이동! Knight 이동! SuperKnight 이동! 출력
EnterGame(mage); // Mage 이동! 출력
}
}
}