C#

[C#]메서드 숨기기(Method Hiding)

DevStory 2022. 5. 16.

메서드 숨기기(Method Hiding)

부모 클래스 멤버를 숨기기 위해 new 키워드를 사용하는 것을 메서드 숨기기(Method Hiding)라고 합니다. 메서드 숨기기는 자식 클래스가 부모 클래스의 메서드를 다시 구현하기 위해 사용되며, 메서드 재정의(Method Overriding)와 유사합니다.

 

메서드 재정의는 부모 클래스의 메서드를 가상 메서드(Virtual Method)로 선언하여 자식 클래스에서 재정의할 수 있도록 합니다.

 

메서드 숨기기는 부모 클래스의 메서드가 가상 메서드(Virtual Method)로 선언되지 않더라도 부모 클래스의 메서드를 다시 구현할 수 있습니다.


메서드 숨기기 예제

다음 예제는 자식 클래스에서 new 키워드를 사용하여 메서드를 다시 구현합니다.

class Parent
{
  public void show()
  {
    Console.WriteLine("Parent 클래스의 show() 메서드 재정의");
  }
}

class Child : Parent
{
  public new void show()
  {
    Console.WriteLine("Child 클래스의 show() 메서드 재정의");
  }
}

class Program
{
  static void Main(string[] args)
  {
    Child child = new Child();
    child.show();
  }
}

실행 결과

Child 클래스의 show() 메서드 재정의

Parent와 Child 클래스에는 메서드 이름, 매개변수, 반환 타입이 동일한 show() 메서드가 존재합니다. 자식 클래스인 Child 클래스에서 new 키워드로 show() 메서드를 선언하는 것은 부모 클래스의 show() 메서드를 숨긴다는 것을 의미합니다.


메서드 재정의와 메서드 숨기기의 차이점

메서드 숨기기 소개에서 언급했지만, 부모 클래스의 메서드를 다시 구현하기 위해서는 메서드 재정의 또는 메서드 숨기기를 사용할 수 있습니다.

 

메서드 재정의는 부모 클래스의 메서드를 virtual 키워드로 선언하여 메서드를 재정의할 수 있는 권한을 부여합니다. 자식 클래스는 override 키워드를 사용하여 권한이 부여된 메서드를 재정의할 수 있습니다.

 

메서드 숨기기는 부모 클래스의 메서드가 virtual 키워드로 선언되지 않더라도 new 키워드를 사용하여 메서드를 다시 구현할 수 있습니다.


메서드 숨기기를 사용하는 이유

  • 부모 클래스의 메서드가 virtual로 선언되지 않았는데, 메서드를 다시 구현해야 하는 경우 사용할 수 있습니다.
  • 부모 클래스의 메서드에 영향을 주지 않고 특정 메서드를 다시 구현해야 하는 경우 사용할 수 있습니다.

즉, 메서드 숨기기의 주요 목적은 부모 클래스의 멤버를 보호하는 것입니다. 


정리

  • 부모 클래스의 멤버를 new 키워드를 사용하여 숨기는 것을 메서드 숨기기라고 합니다.
  • 부모 클래스의 메서드에 영향을 주지 않고 메서드를 다시 구현할 수 있습니다.
  • 메서드 재정의가 불가능한 상황에서 메서드 숨기기를 사용할 수 있습니다.
반응형

댓글