Inheritance allows a class to extend the functionality of an existing class. It creates an IS-A relationship between classes and allows subclasses to inherit features from parent classes while adding new functionality. Inheritance promotes code reusability and runtime polymorphism. Java supports single inheritance but not multiple or hybrid inheritance to avoid ambiguity and provide a clearer design. A subclass can inherit instance variables and methods from a parent class. Constructors cannot be inherited.