I think this article explains it:
https://msdn.microsoft.com/en-us/library/ms173153.aspx
basically it depends on whether your beverage is being accessed as a Mocha or and Expresso vs what it actually is.
ie
((Espresso)mocha).GetDescription() == "espresso" if you 'new' rather than 'override'
so if you want to do
foreach(Beverage b in List) { //print description } then you should overide