The reason you do not have to override Awake, Start, Update and other method is because they are not virtual methods defined in a base class.
The first time your script gets accessed, the scripting runtime looks through the script to see if some methods are defined. If they are, that information is...