2 ms·
Sounds like a controversial statement and I'm not sure how universal true this is. I'll give it a thought. Thank you.
by andreygrehov 8y ago
Sounds like a controversial statement and I'm not sure how universal true this is. I'll give it a thought. Thank you.
- xapata 8y agoAnother way of explaining this is that Interfaces are Java's way to compensate for the lack of multiple inheritance. There's more than one variety of inheritance. Both Python and Java chose implementation-inheritance, meaning that the children get to use not only the interface, but also the implementation of the parent. For some reason, I'm not quite sure why, the Java folks thought that multiple implementation-inheritance would cause too many problems. They still recognized it's useful, so they provided a 2nd form of inheritance that supports multiple parents, interface-inheritance. There are more varieties of inheritance that a language could choose, for example, prototypes like JavaScript.
- andreygrehov 8y agoYes, I'm familiar with all of that, but isn't the Diamond of Death [1] is the exact reason why they did it? [1] https://en.wikipedia.org/wiki/Multiple_inheritance#The_diamond_problem https://en.wikipedia.org/wiki/Multiple_inheritance#The_diamo...
- xapata 8y agoPeople read left to right. That solves all the trivial problems. The harder problems were always vocabulary problems not programming problems. The trouble is that English, and other human languages, have never been as clear or specific as we assume they are when we start writing code. For example, what is a bird? It's a thing that flies? Oh, ostrich, penguin... All these supposed OOP inheritance problems aren't unique to inheritance but to the translation of human language to programming. There's no need to exclude multiple inheritance, because nearly every aspect of programming is afflicted.