David,
It is a difference in VFP, but it's not really that big a deal. The only places where this is an issue is for the event methods where the VFP baseclasses actually do something (like KeyPress, MouseDown). The VFP designers gave us this shortcut for this default behavior to simply occur at the end of all of our code. NODEFAULT allows us to prevent this from happening.
There'd probably be near as many problem posts from people complaining why the keys they type are not showing up in their textboxes anymore. I did C++ before VFP and I at first preferred the explicitness of calling the ParentClass code using ::, but now I'm really happy with the way this detail is just "handled" by VFP.
>Agreed. By design. But IMHO, not a consistent application of classical class inheritance (...as I understand it).
>
>IMHO any appearance of any code in a method of a subclass should prevent execution of ANY AND ALL code up the hierarchy unless explicitly called by the overriding subclass code. That's how it works for any custom methods I write.
>
>I can see the coding advantages of having the default behavior execute automatically, in spite of intervening code in the hierarchy. Still, it's not in keeping with behavior of methods not inherited from the base class.
>
>As a coder, I must know that both NODEFAULT and DODEFAULT() must appear in any event method where I want to completely control the execution of the default behavior relative to the new behavior I'm adding. Whereas, in methods I've added (...to my virtual base class,say), only DODFAULT() is required in subclassed methods thereof.