Inheritance allows classes to establish a hierarchical "is-a" relationship where subclasses inherit and extend the functionality of superclasses. A subclass inherits all fields and methods from its direct superclass and inherits from all superclasses up the class hierarchy with Object at the top. Constructors must call superclass constructors to initialize inherited fields properly. Subclasses can override methods of superclasses to provide specialized implementations while preserving the original signature. Polymorphism occurs when subclass objects are referenced by superclass references and the method invoked is based on the object's actual type. Final methods and classes prevent overriding and extension respectively.