2011-01-26 11 views
5

¿Qué se recomienda en una clase de resumen?¿Método abstracto o virtual?

¿Tiene un método virtual que devuelve nulo o tiene un método abstracto?

Es conveniente y fácil que vuelvan nulos, ya que no tengo que hacer nada que herede de la clase abstracta. Pero aún así, devolver algo nulo es algo difícil de entender si es por propósito, error o diseño ...

¿Hay alguna recomendación clara para esto?

+2

Por supuesto, * cualquier cosa * que no esté debidamente documentada será difícil de entender. –

Respuesta

16

Si devolver nulo es algo sensato y sensato como comportamiento predeterminado (con la documentación de respaldo), entonces quizás virtual esté bien. Del mismo modo, si puede crear un valor predeterminado razonable, pero solo desea ofrecer extensibilidad: virtual.

Si la clase (concreta) no puede funcionar sin una implementación no predeterminada, entonces hazla abstract. El escenario del libro de casos aquí es Stream: sin una implementación correcta ¿de dónde vendrían los bytes? (/ ir a).

2

Tengo un método abstracto si exijo que la clase derivada proporcione la funcionalidad, y un método virtual devuelve nulo (o realiza alguna acción predeterminada) si no me molesta tanto.

Cuestiones relacionadas