If class A has a virtual method and then class B which is subclasses A, overrides that method. Then class C subclasses B. So now C is supposed to inherit B's overriden method, and not A's virtual method. Then if C wants to override B's one it can't because B's method can't be both virtual and override. I guess all inherited classes inherit virtual method from the grand-parent node in object graph in this case and not their parent node. But this seems counter-intuitive. Someone is supposed to inherit something from the parent not grandparent.