What are the key concepts of object-oriented programming, and how do they apply to Java? What is a class in Java, and how does it relate to objects? What is inheritance, and how is it used in Java? What is polymorphism, and how does it work in Java? What is encapsulation, and how does it relate to Java? What is abstraction, and how is it used in Java? How does Java support multiple inheritance through interfaces? What is a package in Java, and how is it used? How is memory management handled in Java, and what is the role of garbage collection?