Característica de algunos lenguajes de programación que no obligan a declarar el tipo de datos de cada objeto de forma explícita. La falta de definición obliga al programador o al sistema en fase de ejecución, a comprobar si los objetos se manipulan de forma correcta.