div0 wrote: > Strangely it doesn't give an error if A is an interface though.
Interfaces aren't overridden; they're implemented. You're providing functionality, not replacing it. By marking a function with override, you're clearly marking that it's polymorphic and intended to be so. If you force override for all cases when a function is overridden, then you avoid issues where you unknowingly override a function, changing the objects behavior. That's not a problem with interfaces since there's no behavior to change. The problem with interfaces is when you don't implement them completely, and they complain plenty when that happens. - Jonathan M Davis