¿Cómo se implementa la generalización en lenguajes de programación orientados a objetos?