업 캐스팅은 자식에서 부모로 형 변환해 주는 것으로 암시적 캐스팅이다. 업 캐스팅을 할 때 자식 클래스의 변수나 함수에 접근은 불가능하다.
class Character { int a; } class Player : Character { int b; } void Start() { Player player = new Player(); Character character = player; //Up-Castring }
다운 캐스팅은 부모를 자식으로 형 변환해 주는 것으로 명시적 캐스팅이다. 업 캐스팅을 하고 다운 캐스팅을 할 때 업 캐스팅을 하기 전 클래스가 같은 클래스여야만 한다.
class Character { int a; } class Player : Character { int b; } void Start() { Player player = new Player(); Character character = player; Player player2 = (Player)Character; //Down-Castring }
캐스팅이 가능한지 불가능한지 확인해 주고 캐스팅이 가능하면 True 불가능하면 False 값을 준다.
class Character { int a; } class Player : Character { int b; } void Start() { Player player = new Player(); Character character = player; Player player2 = (Player)Character; bool bPlayer = character is Player; //True bool bMonster = character is Character; //False }
캐스팅이 가능하면 캐스팅을 한 뒤 객체를 준다. 반대로 캐스팅이 불가능하면 Null을 준다.
class Character { int a; } class Player : Character { int b; } void Start() { Player player = new Player(); Character character = player; Player player2 = (Player)Character; Player player3 = character as Player; //캐스팅 성공 Character character2 = character as Character; //Null }