To analyze an ordinary overloaded instance call, first enumerate members visible through the receiver's static type and choose the applicable signature using argument static types. Only then use the receiver's runtime type to select the effective override of that signature. This two-stage rule explains why changing a reference's declared type can change the selected overload even when every reference points to the same object. A
super call selects the inherited implementation according to the language's superclass or linearization rules instead of recursively redispatching to the overriding body. Articles by others on the same topic
There are currently no matching articles.