# data[].attributes.body
Subclases (clase hija, clase extendida, clase derivada): Son las clases derivadas de las superclases

# data[].attributes.body
Superclase (clase padre, clase base): es la clase existente

# data[].attributes.body
clases que heredan de clases base se denominan derivadas o subclases, estas a su vez pueden ser clases bases para otras clases derivadas.

# data[].attributes.body
heredar de una clase base se hereda tanto los atributos como los métodos, mientras que los constructores son utilizados, pero no heredados.

# data[].attributes.body
Adaptacion de programas para trabajar en situaciones similares pero diferentes

# data[].attributes.body
Organizacion de objetos en jerarquia

# data[].attributes.body
Extraccion de aspectos comunes de clases diferentes

# data[].attributes.body
Facilidad en la modificacion de clases

# data[].attributes.body
Ventajas son:

# data[].attributes.body
Herencia Múltiple: Indica que se pueden definir nuevas clases a partir de dos o más clases iniciales. En esta estructura jerárquica, cada clase tiene sólo una clase padre. La clase padre de cualquier clase es conocida como su superclase. La clase hija de una superclase es llamada una subclase.

# data[].attributes.body
Herencia simple: Indica que se pueden definir nuevas clases solamente a partir de una clase inicial, Java sólo permite herencia simple y la herencia simple hace que el código sea reutilizable.

# data[].attributes.body
dos tipos de herencia

# data[].attributes.body
una propiedad esencial de la Programación Orientada a Objetos que consiste en la creación de nuevas  clases  a  partir  de  otras ya  existentes.

# data[].attributes.body
el mecanismo que sirve para definir objetos basados en otros existentes.