Originally posted by Ernest Friedman-Hill:
Nope. Only code in SubClass, or a subclass of SubClass, can call that protected method on a SubClass object. Extending MyObject is not enough. That's just how it works.
If you want to make the method available to other random code, then yes, you have to override it to make it a public method, as in your first example.
The visibility modifiers (public, protected, and private) affect what other classes are allowed to call a method.