메소드 오버라이드(override) : 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것
부모 클래스의 메소드 → 접근제한자 virtual 반환타입 메서드이름(매개변수)
{
}
자식 클래스의 메소드
→
접근제한자 override 반환타입 메서드이름(매개변수)
{
}
<aside> ✨ 무조건 부모에 virtual 써있어야 override 가능!!!
</aside>
메소드의 이름은 같지만 다른 내용의 메소드를 만들고 싶으면?
→ new 사용
// 부모 클래스에
public virtual void Walk()
{
Debug.Log("걷기");
}
// 자식 클래스에
public new void Walk()
{
Debug.Log("기어가기");
}
// Human의 Walk -> Adult에서 override로 재구현
// Human의 Sleep -> Adlut에서 new로 새 메소드 생성
Human human1 = new Human();
Human human2 = new Adult();
Adult human3 = new Adult();
human1.Walk(); -> 부모의 Walk 호출
human2.Walk(); -> 자식의 Walk 호출
human3.Walk(); -> 자식의 Walk 호출
human1.Sleep(); -> 부모의 Sleep 호출
**human2.Sleep(); -> 부모의 Sleep 호출**
human3.Sleep(); -> 자식의 Sleep 호출
<aside> ⛄ new로 새로 정의한 함수는 자식으로 선언된 자식 객체에서만 호출 가능!!! 부모로 선언한 자식객체에서는 호출할 방법이 없다..
</aside>