Virtual and Override Keywords
If you have a method in a base class that you want to allow derived classes to override, you must declare it as virtual. This means that a method of the same name and argument signature in a derived class will be called rather than the one in the base class. Then, you must declare the method in the derived class using the override keyword.
If you use the override keyword in a derived class without declaring the base class's method as virtual the compiler will flag this as an error. If you create a method in a derived class that is identical in name and argument signature to one in the base class and do not declare it as overload, this also is an error. If you create a method in the derived class and do not declare it as override and also do not declare the base class's method as virtual the code will compile with a warning but will work correctly, with the derived class's method called as you intended.