Whenever you're ready, walk me through how you'd approach this.
Describe the core pillars of object-oriented programming: polymorphism, inheritance, abstraction, and encapsulation.
Explain what each pillar means, how the mechanisms work in Java, and give a concrete example showing how they relate. Distinguish compile-time type checking from runtime method dispatch and identify common misuse of inheritance.
Scope: Use Java terminology and object-oriented design principles; no implementation beyond a short illustrative example is required.