No, no puede lograr el mismo anulando:
- Especificación de un nuevo método permite variar el tipo de retorno
- Al llamar al método de base no puede ser incorrecto
Uno ex un amplio escenario:
- Estás usando tercera biblioteca de partido Foo, que contiene una clase FooBase
- usted escribe su propia subclase de Foo, Bar
- se introduce un método público en bar llamado HacerAlgo
- En la próxima versión de Foo, el tercero introduce un método DoSomething en Foo que no hace lo mismo que su método. Esto puede ser virtual o no.
En este punto, donde todas sus existente código de llamada Bar.DoSomething a todavía Bar.DoSomething llamada, pero todo el código que llama a Foo.DoSomething todavía debe llamar a que la aplicación - esas personas que llaman no pueden incluso sepa acerca de su método, y pueden estar en el ensamblado de terceros.
A largo plazo en esa situación, es probable que desee cambiar el nombre de su método si puede (dependiendo de la cantidad de control que tenga sobre las personas que llaman) pero a corto plazo, haciendo que su método como new
logre exactamente el comportamiento que querer.
Este tipo de cosas a veces se conoce como el problema clase base frágil. Eric Lippert ha escrito sobre ello de forma razonablemente extensiva, incluido el this post back in 2004.
mejor discuta en http://programmers.stackexchange.com/ –