A virtual method is a type of method where the actual method calls depends on the runtime type of the underlying object.
A non-virtual method is a type of method where the actual method called depends on the reference type of the object at the point of method invocation.