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

KeywordDescripción
rasgoDefine una interfaz
implementaImplementa un rasgo para una clase
dondeCláusula where para bounds complejos