The main difference that I see is that overriding forces you to obey the base classes protection and return type information, whereas the new keyword allows you to explicity change these things (i.e.