Un nouveau droit d’accès

Puisqu’elles héritent de la classe Animal, les classes dog et cat peuvent manipuler les attributs et les méthodes de cette classe, car tout est public. Le problème c’est que ce niveau de visibilité permet aussi une manipulation des attributs depuis l’extérieur. Par exemple, le poids :

val dog = Dog(4, "Doggo", "labrador", "brown", 180, 12.5f, 's') 
val cat = Cat(2, "Kitty", "Persan", "grey", 37, 6.21f) 
 
dog.weight = 15f 
cat.weight = 105f 

Pour répondre à cette problématique, nous pourrions définir l’attribut weight de la classe Animal avec le droit d’accès private.

open class Animal(var age: Int, var name: String, var race: String, 
var color: String, var size: Int, private var weight: Float) 
{ 
 
  //... 
 
} 

Si nous ajoutons maintenant à la classe Dog une nouvelle méthode permettant de savoir si l’animal est en surpoids, nous avons besoin d’accéder à l’attribut weight :

import kotlin.math.pow 
 
class Dog(age: Int, name: String, race: String, color: String, 
size: Int, weight: Float, var position: Char = 't') 
: Animal(age, name, race, color, size, weight) 
{ 
 
 //... 
 
 fun isTooBig(): Boolean = 
 ...
couv_RIKOT.png

Découvrez 

le livre :

Aussi inclus dans nos :

Précédent
Mettre en place l’héritage
Suivant
La covariance