🙇‍♀️다형성

  • 형태가 다양하다
  • OOP(은닉성/상속성/다형성)중 하나

🪐virtual, override

  • 부모는 virtual
    • 자식은 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 이동! 출력
        }
    }
}

태그:

카테고리:

업데이트: