The virtual keyword marks a method as able to be overridden in derived classes. It allows the most derived implementation to be called even when referencing the base class (polymorphism). A virtual method is not automatically public (access is separate), not static (static methods cannot be virtual), and "derived" is vague - the key concept is overriding.