가상 멤버
virtual(Visual Basic의 경우 Overridable) 멤버를 사용하면 멤버의 다른 구현을 제공하여 멤버의 동작을 변경할 수 있습니다. 이러한 멤버는 일반적으로 형식의 파생 클래스로 해당 시나리오의 세부 사항을 처리할 때 사용합니다. 예를 들어, WebRequest 클래스는 URI(Universal Resource Identifier)로 요청을 보내는 기능을 정의합니다. FtpWebRequest 클래스는 해당 가상 메서드를 재정의하여 FTP(File Transfer Protocol) 구성을 사용하는 URI에 대한 요청의 전달을 처리하는 WebRequest의 파생 클래스입니다.
가상 멤버는 콜백 및 이벤트보다는 성능이 우수하지만 비가상 메서드에 비해서는 성능이 떨어집니다.
가상 메서드는 반드시 필요하고 가상 멤버 디자인, 테스트 및 유지 관리와 관련된 모든 비용을 정확히 알고 있는 경우에만 사용합니다.
버전 간에 가상 멤버의 구현을 변경하면 버전이 호환되지 않을 수 있습니다. 이러한 이유로 가상 메서드를 올바르게 디자인하고 완전하게 테스트하려면 많은 비용이 소요됩니다.
가상 멤버에는 public 액세스 가능성보다는 protected 액세스 가능성을 사용합니다. public 멤버는 필요한 경우 보호된 가상 멤버를 호출하여 확장성을 제공해야 합니다.
상속과 관련이 없는 모든 시나리오에 필요한 멤버는 public 멤버여야 합니다.
Portions Copyright 2005 Microsoft Corporation. All rights reserved.
Portions Copyright Addison-Wesley Corporation. All rights reserved.
디자인 지침에 자세한 내용은 참조를 "Framework 디자인 지침: 규칙, 숙어, 및 재사용에 대 한 패턴입니다.NET 라이브러리"도 서 Krzysztof Cwalina와 Brad Abrams, 게시 Addison-wesley, 2005.