La covariance Covariance
Pour aborder le concept de la covariance, reprenons le programme écrit précédemment :
val dog = Dog(4, "Doggo", "labrador", "brown", 180, 12.5f, 's')
val cat = Cat(2, "Kitty", "Persan", "grey", 37, 6.21f)
Que ce soit pour la variable dog ou la variable cat, nous ne précisons pas le type de la variable. Nous avons vu que ceci est possible grâce à l’inférence de type. En réalité, nous pouvons écrire :
val dog: Dog = Dog(4, "Doggo", "labrador", "brown", 180, 12.5f, 's')
val cat: Cat = Cat(2, "Kitty", "Persan", "grey", 37, 6.21f)
La covariance consiste, dans le cas d’une variable qui a pour valeur un objet, à déclarer le type de la variable avec le type de la classe mère malgré une instanciation avec une classe fille.
Dans ce cas, cela consiste donc à déclarer la variable dog ou la variable cat avec le type Animal :
val dog: Animal = Dog(4, "Doggo", "labrador", "brown", 180, 12.5f, 's')
val cat: Animal = Cat(2, "Kitty", "Persan", "grey", 37, 6.21f)
Dès lors que les variables dog et cat sont déclarées en tant qu’Animal, elles sont considérées comme tel. Cela signifie qu’on ne peut plus accéder aux attributs ou aux méthodes spécifiques...