Traits e interfaces
Forja soporta rasgos (interfaces/traits) y su implementación para clases. Permiten definir comportamientos compartidos y polimorfismo paramétrico con genéricos.
Definir un rasgo
📐 Sintaxis
rasgo NombreRasgo {
funcion metodo1(param1: Tipo) → Retorno
funcion metodo2() // opcional: cuerpo por defecto
} Implementar un rasgo
🧬 Implementación
implementa NombreRasgo para MiClase {
funcion metodo1(param1: Tipo) → Retorno {
retornar ...
}
} Ejemplo completo
🎓 Rasgos + Clases
rasgo Volador {
funcion volar() → Texto
funcion aterrizar() // default vacío
}
clase Pajaro {
nombre
constructor(n) { este.nombre = n }
}
implementa Volador para Pajaro {
funcion volar() → Texto {
retornar este.nombre + " está volando..."
}
}
variable p = nuevo Pajaro("Tweety")
escribir(p.volar()) Genéricos con rasgos
🔄 Genéricos boundeados
funcion imprimir<T: Volador>(valor: T) {
escribir(valor.volar())
} Cláusula donde
Para bounds complejos con múltiples rasgos, usá la cláusula donde:
📍 Where
funcion procesar<T>(valor: T)
donde T: Volador + Mostrar
{
escribir(valor.volar())
} Keywords relacionadas
| Keyword | Descripción |
|---|---|
rasgo | Define una interfaz |
implementa | Implementa un rasgo para una clase |
donde | Cláusula where para bounds complejos |