Explores object-oriented programming concepts, polymorphism, inheritance, and dynamic binding in Java, emphasizing the importance of correct object comparison.
Explores the core features of object-oriented programming, including dynamic dispatch, encapsulation, inheritance, and subtyping, using Java examples and practical insights.
Covers how classes and objects are organized in packages, imports, Scala's class hierarchy, traits, top types, the Nothing type, exceptions, and includes an exercise on type determination.
Covers polymorphism in object-oriented programming, focusing on inclusion polymorphism and its implementation through class hierarchies and virtual methods.