[c#] 은닉성과 다형성

Yerin·2022년 1월 19일
0

해당 글은 <C#과 유니티로 만드는 MMORPG 게임 개발 시리즈> 강의를 정리한 글입니다.

은닉성

접근 한정자

public: 모두에게 공유, 외부에서 사용 가능
private (default): 클래스 내부 로직에서만 사용 (나만 사용), 상속 시에도 접근 x
protected: 외부에서 접근할수 없으나, 상속 시에는 접근 가능

다형성

❗❗❗
오버로딩 : 함수 이름의 재사용
오버 라이딩 : 다형성을 이용, 부모 클래스의 메소드를 타입에 따라 다르게 작동하도록 함

키워드 virtualoverride 사용

 class Player
    { 
        public int hp;
        public int attack;

        public virtual void Move()
        {
            Console.WriteLine("Player 이동");
        }
    }

 class Knight : Player {
        public override void Move()
        {
            Console.WriteLine("Knight 이동");
        }
    }
 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;
                mage.Move(); //
            }

        
        }
        static void Main(string[] args)
        {
            Knight knight = new Knight();
            Mage mage = new Mage();

            EnterGame(mage);
        }
    }

결과

Mage 이동
Mage 이동

cf) sealed override 키워드의 사용
➡ 현재 클래스까지만 오버라이딩 가능

profile
재밌는 코딩 공부

0개의 댓글