When Mobile object is created as line 20.Why the Phone constructor invoke Mobile's showDevice() but not itself showDevice() even if I type "this.showDevice()".
My Way,My Pace
posted 13 years ago
Because of dynamic binding. The actual instance method that will be called depends upon the runtime type of the object you are using. Even if you type this. it still will look at the runtime type of the object and use the method of that type.
Be careful, with static elements and instance variables the behaviour is different in these cases. Try it out with a few examples is the best thing to do to get a clear idea on this subject.