Programmation Ruby/Héritage
Un livre de Wikibooks.
<< Retour au sommaire << Retour à programmation objet
L'héritage permet de créer une classe à partir d'une autre pour l'enrichir, ou la spécialiser. Une classe (classe dérivée, ou classe fille) hérite d'une autre classe (classe de base, ou classe mère).
On peut toujours utiliser les méthodes de la (des) classe(s) mère(s) dans une classe dérivée.
L'opérateur < précède le nom de la classe de base.
[modifier] Exemple
La classe Point vue précédemment :
class Point def initialize( x, y ) @x = x @y = y end def coords puts "x : #{@x}" puts "y : #{@y}" end end
peut être dérivée en une classe PointColore représentant un point coloré. Cette classe possède donc un attribut supplémentaire pour la couleur :
class PointCouleur < Point def initialize( x, y, couleur ) super(x,y) # appel au constructeur de la classe Point @couleur = couleur end def couleur puts "couleur : #{@couleur}" end end
Lorsqu'on crée une instance de la classe dérivée, on bénéficie immédiatement des méthodes de celle-ci :
pc = PointCouleur.new(1,2,"rouge") pc.couleur # => couleur : rouge
Et les méthodes de la classe de base étant héritées, on pourra la réutiliser dans la classe dérivée:
pc.coords # => x : 1 # y : 2
Par contre, la classe de base ne possède pas les méthodes définies dans les classes dérivées.
p1 = Point.new p1.couleur => NoMethodError: undefined method `couleur' for #<Point:0xb7c059b0 @x=0, @y=0>

