더북(TheBook)

43.11 기본 클래스의 멤버 숨기기

부모 클래스에 만든 특정 메서드를 자식 클래스에서 새롭게 정의해서 사용할 때는 new 키워드로 자식 클래스의 메서드를 정의할 수 있습니다. 부모에 public void Work()로 정의된 메서드는 자식에서 public new void Work()로 재정의됩니다.

기본 클래스의 멤버를 숨기고 자식 클래스에서 새롭게 정의하는 방법을 살펴보겠습니다.

> class Parent        //① 부모 클래스 생성
. {
.     public void Work() => Console.WriteLine("프로그래머");
. }
>
> class Child : Parent //② 자식 클래스 생성
. {
.     //기본 멤버 숨기기: new -> 새롭게 정의, 다시 정의, 재정의
.     public new void Work() => Console.WriteLine("프로게이머");
. }
>
> var child = new Child(); //자식 클래스의 인스턴스 생성
> child.Work();
프로게이머

Parent 클래스는 Work() 메서드에서 “프로그래머”를 출력합니다. 자식 클래스인 Child 클래스에서 따로 Work() 메서드를 구현하지 않았다면 “프로그래머”를 그대로 출력하겠지만, 여기서는 새롭게(new) Work() 메서드를 만들고 “프로게이머”를 출력하도록 변경했습니다. 이렇게 부모에 정의된 메서드를 new 키워드로 새롭게 정의해서 사용할 수 있습니다. 이러한 내용을 다른 말로 메서드 오버라이드라고도 합니다. 이 부분은 다음 강의에서 좀 더 자세히 다루겠습니다.

개체 지향 프로그래밍의 세 가지 주요 특징은 캡슐화, 다형성, 상속입니다. 이 강의는 그중 상속을 다루었습니다. 상속을 사용하면 부모 클래스 기능을 재사용할 수 있습니다. 닷넷에서 제공하는 수많은 API는 이러한 상속 관계를 거쳐 여러 API를 재사용하거나 확장해서 사용합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.