Various binding styles in OO

Perhaps not great news to most, but I found this study of late binding in OO languages to help me [1] [2] better understand how the term is context-sensitive . It appears that Smalltalk was the most flexible/robust in some sense.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Overriding vs. overloading

Much of the confusion here is because the paper deliberately conflates (dynamic) overriding with (static) overloading and treats both as parts of late binding semantics. I don't think that makes much sense. Admittedly, mixing both in the way e.g. C++ or Java do is not a good idea to start with.

Also, the paper's running example is too simplistic for languages with structural object types (like OCaml), where the three argument types collapse into one. For example, with a "real" example that adds methods along the T-M-B inheritance chain, the whole third column would be an error in Ocaml, because Down no longer is a subtype of Up (and the second column would contain errors, too).


for the insights / critique; helpfully educational.