We can use a virtual keyword to indicates that this class can be extended and overrides are allowed. If the methods need to be overridden, then the classes should be declared with the virtual keyword.
Virtual classes allow you to define “full” classes. They implement all of the necessary functionality to operate on their own, but can be extended by child classes in order to allow customization of its behavior.