HACKER Q&A
📣 Danao

Is the Java OO model really broken and does C# provide a better model?


A friend of mine suggested that It would be better if I learn C# rather than Java. According to him, Java's OO model is a little bit. It's better tackled after learning a correct, functional object-oriented language like C#. What do you think? What's the meaning of "broken"? What is the definition of a good OO model?


  👤 ayende Accepted Answer ✓
From OO perspective, there really isn't any difference between Java and C#

There are certain features (such as linq, genetics,etc) that I consider C# superior, but OOPness isn't one of them.

That said, for historical reasons, Java has a lot more emphasis on class hierarchies, etc


👤 theandrewbailey
If by 'better', your friend means 'newer', then sure, C# is newer than Java. However, OOP hasn't changed much since before either came out; hell, Java went so far into OOP that it can be cringeworthy[0]. C# has a lot of nifty features, but I'm not aware of any OOP area were it's way ahead of Java.

[0] https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...


👤 policipal
I would offer that Smalltalk has the most straight forward model of OO. If you want to compare OO models I might compare ST to C# instead.

👤 policipal
The simplest (easiest) OO model I would argue is Smalltalk.