Got that. (That's why I added in the doSomethingElse() method.) And you're right, this isn't truly a
polymorphism question.
But why would the compiler choose MySuperclass.doSomething()? I would expect that because the underlying object is actually an instance of MySubclass, the called method would be MySubclass.doSomething(). On top of that, the call in main() has a String argument, which would match MySubclass.doSomething(String) method more specifically than MySuperclass.doSomething(Object).
I'm sure I'm thinking about this incorrectly...but I still don't see it.