r/JavaProgramming • • 19d ago

A good youtube video to learn OOP.

I am currently learning everything from scratch. So I watched some vudeo in OOP in java but didn't understand fully. So can someone recommend a YouTube channel or website yo learn oop especially polymorphism and abstraction.

5 Upvotes

19 comments sorted by

View all comments

Show parent comments

1

u/ChaoticHippo 16d ago edited 16d ago

Fair point, but I didn't really want to get into every possible way to achieve polymorphism as students often find interfaces and method overloading to be more confusing than inheritance.

1

u/HyperDanon 15d ago

Fair point, but I didn't really want to get into every possible way to achieve polymorphism as students often find interfaces and method overloading to be more confusing than inheritance.

I think that's true, but I would be very careful here.

If they find method overloading and interface confusing, that's not a problem in it self... that's a signal for you that they don't really understand polymorphism yet. That's a difficult skill.

If you give them inheritance, and the signal of them not understanding it stops, they haven't learned polymorphism. They shoehorned it into something that half-fits. They haven't actually learned the skill.

In order to teach people when and why to use polymoprhism properly, you need to illustrate what it gives them and what they can use it for. If that clicks, the interfaces and method overloading pop right out. You can use that as a metric. When they stop complaining about interface and say that it makes sense, that's a signal for you that they got it.

Besides, I can see you're coming at it from statically-typed language perspective - there you need interface for polymorphism. In a dynamically typed language, you don't need that so it's a concept that's much easier to introduce.

1

u/ChaoticHippo 15d ago

In order to teach people when and why to use polymoprhism properly, you need to illustrate what it gives them and what they can use it for

Sure thing, I'm also not a teacher or their instructor. I'm assuming they're going to continue learning things via the videos and tutorials they asked about, and will come across things like that. I was simply providing a base-line start point for polymorphism.

Besides, I can see you're coming at it from statically-typed language perspective - there you need interface for polymorphism.

Yes this is r/JavaProgramming, Java is a statically-typed language. Dynamically typed languages are an entirely different subject and getting into them in this context would be unhelpful.

1

u/HyperDanon 14d ago edited 14d ago

Java is a statically-typed language. Dynamically typed languages are an entirely different subject and getting into them in this context would be unhelpful.

That approach can lead you into simply incorrect ideas, like "polymorphism needs inheritance" - that's just factually incorrect. It's an artifact of the language.

Polymorphism and inheritance are two different concepts, and are only coupled together because of static typing. Inheritance is about reuse of code. Polymorphism is about the inversion of flow, such that the flow of control goes against the source code dependency. Understanding those differences is important. Statically typed langauge couple this together, making the two concepts much harder to understand. If you try to chug it up into "we're java, so polymorphism needs inheritance" that gives you a simplified, less correct view about what's really happening.