¿Qué es?

Se trata de definir una interfaz pública y ocultar los detalles privados de implementación.

Esto fue introducido por lenguajes como fue Modula