Hola,
Polimorfismo es una característica de los lenguajes orientados a objetos que permite especificar implementaciones concretas a partir de una interfaz o una clase abstracta, la ventaja es que estas implementaciones se pueden manejar desde dicha interfaz haciendo que sea más sencillo de manipular por otras clases.
Un ejemplo de polimorfismo puede ser una clase ProcesadorCompras que registra una compra y necesite notificar al usuario, pero la forma de notificar el proceso no depende de la clase, puede ser un email o un mensaje de texto. Para este caso es mejor que ProcesadorCompras llame a una interfaz que realiza la acción de notificar y de esta interfaz se desprenden las implementaciones de Notificar por Email y Mensaje de Texto.
Ahora bien, ¿Qué tal si simplemente coloco la lógica de enviar una notificación directamente en ProcesadorCompras y me ahorro crear clases aquí y allá? Se puede hacer, pero hay que tener en cuenta que a medida que un proyecto crece y se añaden nuevas funciones, tal ves se necesitan hacer otras notificaciones en otros procesos y se terminaría copiando el código de notificar por todo lado, poco a poco el proyecto se volvería más difícil de mantener con todo ese código espagueti. El polimorfismo nos ayuda a mantener una separación entre distintas funcionalidades del sistema.
No se a que hagan referencia a Escritura, ¿Estas seguro que no se refiere a Herencia?