Originally posted by Scott Selikoff:
I think the number one issue in situations like this that disturbs me a little is if I cast an object as a specific parent class, and call the parents method, its child's version of a method will be called (if such a version is overriden).
Not that I shouldn't expect it, but it definitely makes reading/debugging code a little bit confusing at times. Keep in mind though, if not for this 'wonderful' behavior of runtime method decisions the singleton factory pattern wouldn't work that well.
Why should it be disturbing???
In Java, the bejavior is always standard, so you can hardcode the expectation in your mind, can't you.