Trait Trait

1. Définition

Un trait est une construction qui se rapproche à la fois de la notion d’interface et de la notion de classe abstraite en Java. On peut y définir des méthodes ou des valeurs accessibles uniquement aux classes qui l’étendent.

Comme dans une interface, on peut définir des fonctions sans les implémenter. Dans ce cas, toutes les implémentations qui étendent ce trait devront implémenter cette fonction.

Comme dans une classe abstraite, on peut définir des fonctions concrètes. Dans ce cas, tous les éléments qui étendent ce trait auront accès à cette fonction.

2. Étendre un trait

Prenons comme exemple un trait Animal qui définit les fonctions abstraites suivantes :

  • nombreDePattes qui renvoie le nombre de pattes de l’animal ;

  • son qui renvoie le son que produit l’animal.

La méthode concrète imprimeSon imprime le son que produit l’animal.

trait Animal { 
 val nombreDePattes: Int 
 def son(): String 
 def imprimeSon(): String = s"L'animal fait ${son()}" 
} 
// defined trait Animal 

On crée une classe Chien qui étend ce trait en utilisant le mot-clé extends et en implémentant la méthode son et la variable nombreDePattes. Trait:extends

class Chien extends Animal { 
 val nombreDePattes: Int = 4 
 def son(): String = "Ouaf !" 
} 
// defined class Chien...
couv_EPSCALA.png

Découvrez 

le livre :

Aussi inclus dans nos :

Précédent
Fonctions pures
Suivant
Case class