From my understanding, the virtual keyword allows you to use the base class’ method, and override allows you to override it in a class that inherits from the base class. My confusion is that I just tested not using the virtual keyword in the base class’ method definition and not including that method in the derived class, and I was still able to call the base class’ method (it showed up in intellisense and ran). Also, I know that if i wanted a new method definition for that same method for my derived class that I could use the new keyword..
I am probably missing a key point but this is the way I understand it which is why I am confused as to the purpose of virtual and override
This is expected behaviour.
Virtual allows you to override a method which is defined in the base class, in other words extend the implementation of the method in the derived class.
Differences between the new keyword and the override one can be found on MSDN here.
It is access modifiers (private, public, protected) that affects if you are able to call the base class method in the derived class or not.