Classes - Herència

  • Mecanisme per definir una classe a partir d’una altra de semblant.

  • Classe base = classe original; classe derivada = nova classe, que hereda (també anomenada subclasse).

  • S’hereden tots els mètodes (i per tant els atributs, perquè s’hereda __init__), però

    • es poden afegir nous mètodes i atributs

    • es poden redefinir mètodes

    • es poden reaprofitar els mètodes de la classe base, cridant_los amb super().metode(...)

  • Per afegir nous atributs, redefinirem __init__ en la classe derivada. Convé cridar -hi a super().__init__(...).

Atenció

Una classe derivada no pot accedir als atributs privats de la classe base.

Sintaxi: definició d’una classe utilitzant herència

class ClasseDerivada(ClasseBase):       # ClasseDerivada hereda de ClasseBase
    def __init__(self, ...):
        super().__init__(...)
        self.atr1 = ...
        self.atr2 = ...
        ...
    def metode1 (self, ...):
        ...

Exemple:

Definció de la classe Rectangle que es deriva (per herència) de la classe Quadrat. Li afegeix un atribut i redefineix els mètodes que cal. Vegeu el mòdul rectangles.py.