El polimorfismo en Java tiene dos tipos: polimorfismo de tiempo de compilación (enlace estático) y polimorfismo de tiempo de ejecución (enlace dinámico). La sobrecarga de métodos es un ejemplo de polimorfismo estático, mientras que la anulación de métodos es un ejemplo de polimorfismo dinámico. Un ejemplo importante de polimorfismo es cómo una clase principal se refiere a un objeto de clase infantil. De hecho, cualquier objeto que satisfaga más de una relación IS-A es de naturaleza polimórfica. Por ejemplo, consideremos una clase Animal y dejemos que Cat sea una subclase de Animal. Entonces, cualquier gato ES animal. Aquí, Cat satisface la relación IS-A para su propio tipo y su súper clase Animal.
Serialización es el proceso de convertir un objeto en una secuencia de bytes para almacenar un objeto en la memoria, de modo que pueda volver a crearse en un momento posterior, manteniendo al mismo tiempo el estado y los datos originales del objeto. En Android puede usar las interfaces Serializable, Externalizable (implementa Serializable) o Parcelable. Si bien Serializable es el más fácil de implementar, se puede usar Externalizable si necesita insertar una lógica personalizada en el proceso de serialización (aunque casi nunca se usa hoy en día ya que se considera una reliquia de las primeras versiones de Java). Pero es muy recomendable usar Parcelable en Android, ya que Parcelable fue creado exclusivamente para Android y funciona aproximadamente 10 veces más rápido que Serializable, porque Serializable usa la reflexión, que es un proceso lento y tiende a crear muchos objetos temporales y puede causa que la recolección de basura ocurra más a menudo. Para usar Serial...