목표

  • Method Hiding에 대해 알아보자

Method Hiding

  • new 키워드를 사용하여, 기본 클래스에서 상속된 멤버를 명시적으로 감출 수 있다.

Method Hiding 예시

  • Humanoid라는 기본 클래스에 Yell이라는 함수가 선언되어 있다.
using UnityEngine;
using System.Collections;

public class Humanoid
{
    //Base version of the Yell method
    public void Yell()
    {
        Debug.Log ("Humanoid version of the Yell() method");
    }
}
  • Humanoid를 상속 받은 Enemy 클래스는 기본적으로 부포 클래스의 Yell에 접근할 수 있다.
  • 하지만 Enemy는 Humanoid와 다른 함성 소리를 지르고 싶다면?
  • new 키워드를 사용하여 부모 클래스에 정의된 함수를 자식 클래스에서 재정의 할 수있다. (사실상 불효)
using UnityEngine;
using System.Collections;

public class Enemy : Humanoid
{
    //This hides the Humanoid version.
    new public void Yell()
    {
        Debug.Log ("Enemy version of the Yell() method");
    }
}

SampleScript

  • 출력 결과, 자식 클래스에서 재정의한 함수가 호출된다.
using UnityEngine;
using System.Collections;

public class SampleScript : MonoBehaviour
{ 
    Enemy enemy = new Enemy();

    public void Start()
    {
        enemy.Yell(); // OutPut : "Enemy version of the Yell() method"
    }
}

+ Recent posts