In all honesty, inheritance, classes, the 'static' keyword, and virtual functions are all harder than anything in Haskell. They're all weird ad-hoc concepts without simple underlying mathematical concepts. That's rather unlike Haskell, where the underlying math is usually very simple, if more abstract than most people are used to.