Inheritance allows one class to extend another class, inheriting its attributes and behaviors. The subclass extends the superclass and inherits all of its variables and methods. The subclass can add additional fields and methods. A subclass object can be referenced by a superclass reference variable, allowing polymorphism through method overriding. Abstract classes define methods that subclasses must implement, without providing an implementation itself. The final keyword prevents inheritance or method overriding.