Originally Posted by zeropointfield
The guarantee is not that the character will have a voice, so to speak. The implementing class could just have an empty bodied method, basically ignoring what you considered an important role for a character. Perhaps a "blob" would have a style of walking and weapons, but no voice after all. The blob would still have to include the voice method, even if it is blank. The guarantee is that if some code asks the blob to speak, the blob can effectively ignore the request without causing the game to crash.