Héritage Héritage
1. Définition
Comme en Java, on peut étendre une classe unique et hériter de ses variables et méthodes. Pour ce faire, il suffit d’ajouter le mot-clé extends suivi de la classe parent et de ses arguments. Héritage:extends
Prenons comme exemple une classe Appartement qui étend la classe Maison définie plus tôt. Un Appartement a toujours une chambre et prend comme argument un lieu.
class Appartement(lieu: String) extends Maison(1, lieu)
// defined class Appartement
Une instance de cette classe aura accès au champ lieu défini comme argument de la classe enfant, mais aussi à tous les champs définis dans la classe parent, que ce soit le nombre de chambres ou la description.
val appartement = new Appartement("Lyon")
// appartement: Appartement = Appartement@75f3e7b1
appartement.lieu
// res249: String = Lyon
appartement.description
// res250: String = Maison à Lyon avec 1 chambres
appartement.chambres
// res251: Int = 1
L’objet obtenu est une instance à la fois de la classe Appartement et de la classe Maison.
appartement.isInstanceOf[Appartement]
// res252: Boolean = true
appartement.isInstanceOf[Maison]
// res253: Boolean = true
On peut créer un objet Maison à partir de cet appartement en forçant son type lors de l’instanciation, mais l’inverse n’est pas possible. Lorsqu’on essaye...