Here's what you covered in this section:
You learned that inheritance lets a child class reuse fields and methods from a parent class using extends. You saw how constructors chain from parent to child, and how super gives you access to the parent's members and constructor.
You practiced method overriding with @Override, learned the rules that make an override valid, and saw how polymorphism lets a parent-type variable call different method implementations at runtime through dynamic dispatch. You used instanceof and casting to move between types safely.
Next, you'll explore interfaces and abstract classes, which give you even more ways to define shared behavior across unrelated classes.