Sustitución de objetos

Pueden utilizarse objetos de un subtipo en cualquier lugar en el que se espere un objeto de un supertipo.

Sustitución de métodos

Una subclase pueden sustituir la implementación de un método. Para ello, la subclase declara un método con la misma signatura que la superclase, pero con un cuerpo del método diferente. El método sustituto tiene precedencia en las llamadas efectuadas sobre los objetos de la subclase.

¿Y los campos?

A diferencia de los métodos, los campos (atributos) no se pueden sustituir en Java.
Si una subclase declara un campo con el mismo nombre que uno de su superclase, no lo sobrescribe, sino que lo oculta. Esto significa que el campo accedido depende del tipo de la referencia, no del objeto real, lo cual no es polimorfismo.