There are a few things in .NET land's take on object oriented programming that I don't quite understand [why they did it the way they do]. This is one.

Both the Base class & the derived classes need the constructors. As constructors are NOT inherited in VB.NET (nor C#).

Another is the fact that you have to label a method Overridable to override it later. Seems to kill quite a lot of the power of oo programming -- or at least trivially hide it so that it, in essence, makes it so that many people will be too lazy to bother. As displayed in the above post, it's at the very least confusing to force explicit signposts about inheritence.