Yes the default behavior is that all constructors execute, the subclass and all its parents constructors, so initialization isn't a problem. Overriding is generally done by declaring methods virtual. I thought he meant how to "override" the constructor, but that doesn't make much sense. That was my point I was trying to get to. You were asking on the other hand asking: What would a virtual constructor create? But what is actually common is to have virtual methods that create subclass objects. This is how the factory pattern works. The parent class provides a CreateInstance Method. specialized factory implementations(subclasses), create related objects of the same family. An SqlServerConnection object provides a CreateCommand method that returns a SqlServerCommand, whereas the OracleConnection object's CreateCommand would return an OracleCommand. The Create methods are not class constructors, but they are constructing objects. It is probably not safe to call virtual methods from a constructor, because the parent constructors execute before the constructors of the subclasses have finished.