virtual is not require here, final and override explicitly need that the base class function is virtual and will throw a compilation error if not.