Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
Because many programmers or software engineers are overwhelmed even by single inheritance. Most classes with multiple inheritance in C++ I saw, were badly designed. But you can implement as many interfaces as you like. Try it, count them and give feedback
If we take a look at how Visual C++ implements multiple inheritance (on binary level) it becomes obvious that even the binary stuff under C++ is built up from the composition of single line inheritances (the reason for multiple vtables in the same object). So we can consider multiple inheritance as a language feature, a "syntactic sugar" that is somewhat a mixture of single line inheritance and object composition in "machine code". It would be possible to create a language supporting multiple inheritance on top of .Net with the same principles but multiple inheritance brings up some design-related questions. I think the single line inheritance is rather a design decision in C#.
Actually, the reason I mentioned it in regards to .NET not supporting it is because (to keep it in line with general .NET interoperability reasons), it would have to be baked into the CLS so that other languages could interact with it.
From Anders Hjelsberg:
"The question is, What about multiple inheritance? And will we get it? If not, why? The easy- the cop out answer at this point is that if we were going to have it, we needed to have it in the first release because it’s way too hard to add after the fact. Even if we did add it, we could never mandate it as being part of the CLS I don’t think, meaning that every language can support it. Multiple inheritance and VB, I don’t think that’s a great cocktail. If we had multiple inheritance, if it wasn’t usable in APIs, I wonder how useful it would really be. I think also when you analyze what is it that people want to do with multiple inheritance, in the vast majority of cases I think there are simpler answers than the full multiple inheritance enchilada with virtual base classes and the diamond problem and all of that stuff."
I don't just make this shizzle up after all.
*pre-emptive celebratory nipple tassle jiggle* - Sean Ewington
Yes, this was one thing I was thinking about because if you wanted to implement multiple inheritance on top of .Net then it would require you to introduce some anonymous base classes (that embody the single line inheritances inside the composite class) and then the composite class itself is just the syntactic sugar provided by the language and inaccessible by the other languages, and of course you would be unable to reach the anonymous classes (classes with auto-generated name) too from other languages. Only some parts of your code (with single line inheritance) could be reached from other languages. My statement about the possibility of providing multiple inheritance in a language on top of .Net still holds. The fact that they allowed just single line inheritance in .Net that is an intersection between languages was a wise decision though, read a list of reasonings about that somewhere.
modified 24-Sep-12 7:58am.
Last Visit: 31-Dec-99 19:00 Last Update: 31-Mar-15 14:05