Inheritance allows classes to share attributes and behaviors. A subclass inherits all public and protected members of its superclass. Subclasses can override methods of the superclass. When an object of a subclass is referenced by a superclass variable, dynamic method dispatch determines which version of an overridden method to call based on the actual object type. Abstract classes define common behaviors without implementing them, requiring subclasses to implement abstract methods. The final keyword prevents overriding of methods and inheritance of classes. All classes implicitly inherit from the Object class.