Anders describes the finer points language design

Why are methods in C# final by default versus virtual in Java? Why is the override
keyword required to override virtual methods?  How did issues like
versioning affect the design of C# and the .NET Framework? 

You can read all about it in Part
IV
 of Bill Venners interview series with Anders Hejlsberg.

Other Reading:

- Part I

[Part II](https://www.artima.com/intv/handcuffs.html)