삽질의 현장/- .NET

#034_닷넷(.NET)_.Net Framework 기본 - 상속 구조를 끊는 new 키워드

shovelman 2015. 10. 27. 21:07


안녕하세요 삽잡이입니다.


이번시간에는 우리가 알던 기존의 new 키워드가 아닌

다른 new 키워드에 대해서 알아보도록 하겠습니다...


부모 클래스의 메서드를 의도적으로 숨기겠다는 표시를 하는 것이지요...




이와 같은 구조의 코드가 있다고 해보겠습니다...


모두 2D 형식으로 그려지는 Draw() 메서드가 있는데,

여기서 기술이 진보된 Rect 3D 클래스는 3D로 Draw()메서드를 사용하고 싶다고 합니다.

이럴때에는 어떻게 해야할까요?


Rect3D 클래스는 부모에게 모든 기능을 물려받고 

기능 하나만을 더 추가 하고 싶은 것입니다.


Rect3D를 따로 만들면 될까요?

그러면 하나의 그룹처럼 다룰 수도 없고, 기존 기능도 물려 쓸 수 없습니다...

3D로 Draw()하는 메서드만을 추가하면 되는데...


즉, 2D를 사용하던 Rect와 Ellipse 클래스는 2D로 Draw()를 하니 상관이 없지만,

3D 기능이 추가된 Rect3D는 어떻게 해야하냐 이겁니다...

우선, 그렇다는 뜻은 override는 아니라는 것입니다...


override는 부모 타입으로도 내 타입을 다룰 수 있도록 해주는 기능입니다.

즉, 다형적으로 동작하겠다는 것입니다.

따라서 지금 Rect3D에서 적어도 Draw() 메서드에는 override가 필요 없습니다...


우리는 부모의 Draw()메서드를 override하지 않았다는 표시를 해줘야합니다.

따라서 여기에는 'new' 키워드를 붙입니다.

메서드에 말입니다!



정리하자면,

기능은 물려받고 싶은데, Draw() 메서드를 오버라이드 하기 싫은 경우에

new를 씀으로써 독립적이고 새로운 Draw() 메서드를 구현하게 되는 것이지요...


이상 삽잡이였습니다!