A virtual method is declared as virtual in a base class.
A virtual method is redefined in one or more derived classes.
When redefining a virtual method in the derived class, the override modifier is used.
When overriding a method, the type signature of the method cannot be changed.
A virtual method cannot be static or abstract.