Polimorfismo: Sobrescribiendo el método toString
En Java, todas las clases que creemos heredan de la clase Object. De esta clase es de donde vienen los métodos que tienen las clases que no fueron creados por nosotros, como equals, hashCode, toString, etc.
En Java no se permite la herencia múltiple, es decir, una clase solo puede heredar de una sola clase.
El Polimorfismo es una característica de la programación orientada a objetos que consiste en sobrescribir algunos métodos de la clase de la cual heredan nuestras subclases para asignar comportamientos diferentes.
Además de los métodos de las superclases, también podemos redefinir el comportamiento de los métodos que “heredan” todos nuestros objetos, así como .toString, hashCode, finalize, notify, entre otros.
Sobrescritura
Cuando una clase hereda de otra y en esta clase hija se redefine un método con una implementación distinta a la del padre.
Los métodos marcados como final o static no se pueden sobrescribir.
Sobrescritura de constructores
Un constructor en una subclase usando los miembros heredados de la superclase con argumentos diferentes.
Si en alguna clase declaramos el método toString vemos que por encima aparece @Override, esto quiere decir que el método que estamos usando pertenece a la clase padre. En este caso toString pertenece a la clase Object, que es la clase padre de todas las clases que creemos.
La función del método toString es imprimir todos los atributos con sus valores del objeto desde el que se aplique. El comportamiento de este puede ser cambiado según se requiera.