해당 글은 <C#과 유니티로 만드는 MMORPG 게임 개발 시리즈> 강의를 정리한 글입니다.
접근 한정자
public: 모두에게 공유, 외부에서 사용 가능
private (default): 클래스 내부 로직에서만 사용 (나만 사용), 상속 시에도 접근 x
protected: 외부에서 접근할수 없으나, 상속 시에는 접근 가능
❗❗❗
오버로딩 : 함수 이름의 재사용
오버 라이딩 : 다형성을 이용, 부모 클래스의 메소드를 타입에 따라 다르게 작동하도록 함
키워드 virtual과 override 사용
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 키워드의 사용
➡ 현재 클래스까지만 오버라이딩 가능