As I understand it, the override
keyword states that a given declaration implements a base virtual
method, and the compilation should fail if there is
No final
does not necessarily imply override
. In fact, you could declare a virtual
function that you immediately declare final
see here. The final
keyword simply states that no derived class
can create an override of this function.
The override
keyword is important in that it enforces that you are indeed actually overriding a virtual function (instead of declaring a new unrelated one). See this post regarding override
So long story short, they each serve their own particular purpose, and it is often correct to use both.