Originally Posted by
zeropointfield
A character in a game HAS TO have a style of walking, a voice, a certain set of weapons, etc etc... so the interface guarantees that another coder working on that character won't forget to code in certain aspects of the character?
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.