Java permite múltiples niveles de herencia, pero no permite que una clase derive de varias (no es posible la herencia múltiple). Se pueden crear tantas clases derivadas de una misma clase como se quiera.
Todas las clases de Java creadas por el programador tienen una super-clase. Cuando no se indica explícitamente una super-clase con la palabra extends, la clase deriva de java.lang.Object, que es la clase raíz de toda la jerarquía de clases de Java. Como consecuencia, todas las clases tienen algunos métodos que han heredado de Object. La composición (que es el que una clase contenga un objeto de otra clase como variable miembro), se diferencia de la herencia, ya que la composición incorpora los datos del objeto miembro, pero no sus métodos o interface (si dicha variable miembro se le modifica su acceso a private).