Un
trait est une
sous-classe abstraite, « simple modèle conceptuel pour structurer des
programmes orientés objets ». Il contient des
méthodes concrètes, et permet de les ajouter à une classe pour étendre ses fonctionnalités. Quand un langage de programmation supporte les traits, il permet la résolution explicite des conflits qui apparaissent quand une classe utilise deux traits qui ont des méthodes qui portent le même nom (contrairement aux
mixins).