In object-oriented programming, I sometimes wish there was a way of saying, "I intend this method to be an implementation of my superclass's method (be it abstract or not). I didn't make this up."
Advantages:
- In the absence of "specific", mistyping the name of a non-abstract superclass method
that you intend to override is an error that leaves you with perfectly valid code (which is never invoked). Introducing "specific" means that the compiler can find these typos.
- A human reader knows that these functions are there as part of interfacing with the surrounding object framework.
Disadvantages:
Higher langauge complexity, clutter, more stuff that doesn't really do much in a procedural sense.
Alternatives:
- if method names were prefixed with the name of the lowest inherited subclass they belong to (separated by something like . or :), you'd get even more documentation out of it.
- [PeterSealy] Symbol Completion in source code editors helps prevent such typos.
I'm not sure the advantages outweigh the disadvantages; I just wonder where there's an OO language out there that has addressed this, and how it played out in practice.