I agree with @Kilian answer but I will add some elements.
1- Running against a Virtual Machine not the OS
Since Java and C# are running through a Virtual Machine, it is logically expected that you cannot do exactly what you want like when being straight on the OS, because you're likely to corrupt something in the VM. Furthermore with Java being oriented as being platform agnostic, it is even more logic.
2- Tons of applications don't require you to need those kind of stuff.
There are tons of applications that really don't need you to dig through that much of details, yet if you do that with a language that require you to do it you get :
- More risks to have bugs due to those unnecessary things.
- More development cost, managing memory and testing it take time and so money!
3- Language are made on some choice weighting cost/usage/risks, like... everything.
With C++ you can do pretty much what you want, that is the choice of C++ people. However the more there is, the more you need to handle.
So things like multiple inheritance are not given up just on the fact that they're dangerous, they're given up because implementing them have a cost (development, maintenancy), all for that for a feature that is rarely get used properly and can generally be rewritten differently.