What are the core object-oriented principles: Encapsulation, Inheritance, Polymorphism, and Abstraction?