1. Inheritance allows classes to reuse properties of existing classes by extending them, making the extended class a subclass and the original class the superclass.
2. A subclass inherits and can access all public and protected properties of its superclass but can also define its own properties.
3. The subclass constructor must call the superclass constructor either implicitly or explicitly using the super() method.