Share via


Miembros virtuales

Actualización: noviembre 2007

Un miembro virtual (Overridable en Visual Basic) le permite cambiar el comportamiento de un miembro proporcionando una implementación diferente del mismo. Se utilizan normalmente cuando se desea que una clase derivada del tipo controle las especificidades de un escenario determinado. Por ejemplo, la clase WebRequest define la funcionalidad para enviar una solicitud a cualquier identificador universal de recursos (URI). La clase FtpWebRequest es una clase derivada de WebRequest que reemplaza sus métodos virtuales para controlar el envío de solicitudes a identificadores URI que utilizan el esquema del Protocolo de transferencia de archivos (FTP).

Los miembros virtuales tienen un mejor rendimiento que las devoluciones de llamada y los eventos, pero no mejor que el de los métodos no virtuales.

No haga que los miembros sean virtuales a menos que tenga una buena razón para ello y que esté al tanto de sus costos con relación al diseño, las pruebas y el mantenimiento de miembros virtuales.

Cambiar la implementación de un miembro virtual entre unas versiones y otras puede provocar sutiles incompatibilidades entre versiones. Por esta razón, los métodos virtuales son muy costosos de diseñar correctamente y probar exhaustivamente.

Para los miembros virtuales, es preferible usar la accesibilidad protegida a la accesibilidad pública. Los miembros públicos deberían proporcionar extensibilidad (si es necesario) realizando llamadas al interior de un miembro virtual protegido.

Los miembros necesarios para todos los escenarios que no implican herencia deberían ser públicos.

Portions Copyright 2005 Microsoft Corporation. Reservados todos los derechos.

Portions Copyright Addison-Wesley Corporation. Reservados todos los derechos.

Para obtener más información sobre las directrices de diseño, consulte el libro titulado "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" de Krzysztof Cwalina y Brad Abrams, publicado por Addison-Wesley, 2005.

Vea también

Otros recursos

Instrucciones de diseño para desarrollar bibliotecas de clases

Diseñar extensibilidad