L'héritage de la programmation orientée objet

I. introduction

  1, construire un nouveau type d'héritage est en cours à la classe, classe parent peut être appelé une classe de base ou super classe, la nouvelle classe peut être appelée sous-classe ou classe dérivée, la sous-classe peut hériter des propriétés de la classe parente.

  2, la classe mère peut être héritée par les sous-classes, sous-classes peuvent hériter également une pluralité de classes parentes.

  3, dans python3, la classe ancêtre le plus élevé hérite par défaut intégré classe d'objets.

  4, en python2, la plus haute classe ancêtre ne fait pas défaut Hériter, cette fois-ci, la classe et ses classes descendantes sont des classes classiques. Sauf indication contraire explicite classe parent ancestral le plus élevé est intégré objet, cette classe et ses descendants sont la nouvelle classe à la classe.

classe bisaïeul: 
    X = 111
 classe Grand - père (bisaïeul):
     Passe 
classe Père (grand - père):
     Passe 
classe Fils (Père):
     Passe 
son_obj_1 = Fils ()
 Imprimer (. bisaïeul __bases__ )   # pour résultat python3 (<class 'objet'>, ) résultat python2 () 
Imprimer (son_obj_1.x)
 Imprimer (Son.x)
 Imprimer (Father.x)
 Imprimer (Grandfather.x)
 # Les résultats ci - dessus sont 111

 

En second lieu, l'héritage multiple: une sous-classe hérite plus d'une classe parente

  1, les avantages suivants: la sous-classe peuvent utiliser les propriétés de chaque classe parent, d'améliorer l'utilisation du code

  2. Inconvénients:

    ① de penser logiquement, cet enfant appartient à la classe elle-même définit une « catégorie » est devenue floue.

    Lisibilité et l'évolutivité du code ② pire, il peut conduire à « problème de diamant. »

  3, si besoin inévitablement l'utilisation de façon héritage multiple, si la méthode Mixins.

Troisièmement, résoudre la redondance du code d'héritage

classe l'employé: 
    Sexe = ' MALE '   # données total attributs 
    DEF  du __init__ (Self, nom, âge):   # une instance d'objet de la sous - classe des attributs communs 
        du self.name = Nom 
        self.age = âge
     DEF SHOW_NAME (auto):   # Il y a une fonction de sous - classe d' 
        impression ( 'c'est un personnel} { ' .format (self.name))
 classe des travailleurs (l'employé):
     DEF work_time (Self, Time):   # travailleur fonctionnalités spécifiques de 
        Print ( « {} heures aujourd'hui comme suit: } { ' .format (le self.name, temps))
classe Manager (l'employé):
     DEF  le __init__ (Auto, nom, âge, adresse): 
        . l'employé du __init__ (auto, nom, âge)   # quand instance d'objet sous - classe Manager, si le parent a des références directes 
        self.skill = compétences   # parent n'est pas, et définissable 
    DEF work_target (self, cible):   # Gestionnaire dispose de spécifique 
        impression ( ' {} indicateurs de mois: {} ' .format (la self.name, cible)) 
worker_obj_1 = travailleur ( ' Tom ' , ' 18 est ' ) 
worker_obj_1.show_name () 
worker_obj_1.work_time ( ' 8H ') 
Manager_obj_1 = Manager ( ' janvier ' , ' 20 ' , ' Danse ' ) 
manager_obj_1.show_name () 
manager_obj_1.work_target ( ' 10 Yi ' )
 # résultat 
'' 
'C'est le tom employé 
tom au travail aujourd'hui: 8 h 
Ce personnel est janvier 
indicateurs jan ce mois - ci: 1 milliard 
« » '

Quatrièmement, la recherche de biens pour

  1, le cas de l'héritage unique: parce qu'il est une relation linéaire, il suffit de suivre l'ancienneté peut trouver petite à grande.

  2, des situations d'héritage multiple:

 

Je suppose que tu aimes

Origine www.cnblogs.com/caoyu080202201/p/12669110.html
conseillé
Classement