> What would it take for C# and/or others to "do OO well"?
Multiple inheritance. (j/k)
Multiple inheritance. (j/k)
Having "interfaces" and "abstract classes" is just a kludge, multiple inheritance covers all of this with one language construct.
The "diamond problem" is a C++ issue, every other language solved it.
https://learn.microsoft.com/en-us/dotnet/csharp/advanced-top...
CLOS and Ocaml figured it out
Also C++ has exactly what you want. No interfaces, multiple inheritance. People don't utilize it unless it's a GUI lib.