I've recently started looking at Android development. This has brought me back into the work of Java software development. The last time I worked with Java, I'll admit, I didn't understand OOP nearly as much as [I think] I do now.
Having mainly used C# in my career, I'm noticing a startling difference in how inheritance is used Java and C#.
In C# It seemed like inheritance could be avoided in most situations. The task at hand could usually be accomplished by using concrete classes of the .Net framework.
In Java, from what I'm gathering from code samples, it seems like the Java framework supplies many interfaces or abstract classes that are then meant to be implemented/extended by the developer.
This seems to be too big a difference to just boil down to style. What is the reasoning behind this? I feel like I won't be writing clean Java code until I understand this.
Also, is this limited to just the Android SDK or is this a Java-wide approach to OOP?
Thanks
EDIT The way I've posed the question is a bit vague. Unfortunately, I'm not sure how to improve on it. However, @FrustratedWithFormsDesigner has a phrasing that I like:
What is it about the design of these two languages that [seems to encourage] more or less inheritance use than the other?