Introduction
In the previous lesson, we looked at the basics of object-oriented programming, such as classes and objects, inheritance, polymorphism, and overloading.
We saw how classes act as a blueprint from which we can create objects, and saw how methods define the behavior of a class while fields hold the state.
We looked at how a class can acquire properties from another class through inheritance to enable us to reuse code. Then, we learned how we can reuse a method name through overloading – that is, as long as they have different signatures. Finally, we had a look at how subclasses can redefine their own unique behavior by overriding methods from the superclass.
In this lesson, we will delve deeper into the principles of object-oriented programming and how to better structure our Java programs.
We will start with interfaces, which are constructs that allow us to define a generic behavior that any class can implement. We will then learn about a concept called typecasting, whereby we can...