Caractéristiques de Golang-Three de la programmation-héritage orientée objet
Introduction de base et diagramme schématique de l'héritage
L'héritage peut résoudre la réutilisation du code et rendre notre programmation plus proche de la pensée humaine.
Lorsque plusieurs structures ont les mêmes propriétés (champs) et méthodes, vous pouvez faire abstraction des structures (telles que Student) de ces structures et définir les mêmes propriétés et méthodes dans la structure.
Les autres structures n'ont pas besoin de redéfinir ces attributs (champs) et méthodes, il suffit d'imbriquer une structure anonyme Student. [Dessinez un schéma]
C'est-à-dire: à Golang, si une structure est imbriquée dans une autre structure anonyme, alors cette structure peut accéder directement aux champs et méthodes de la structure anonyme, réalisant ainsi la fonction d'héritage.
Grammaire de base du
type de structure anonyme imbriquée Struct de marchandises {
Chaîne de nom
Prix int
}
type
Structure du livre { Goods // Il s'agit d'une structure anonyme imbriquée Chaîne Writer des marchandises
}
Cas
Nous avons amélioré sur extend01.go, en utilisant une structure anonyme imbriquée pour obtenir l'héritage, veuillez prêter attention aux avantages d'une telle programmation
type Student struct { Name string Age int Score float64 } func (student * Student) ShowInfo () { fmt.Printf ("student name =% v age =% v grade =% v \ n", student.Name, student.Age , student.Score) } func (student * Student) SetScore (score float64) { student.Score = score } type Pupil struct { Student } func ( pupil * Pupil) Testing () { fmt.Println ("Le contenu de l'examen est différent , En cours de test ..... \ n ") } type Graduate struct { Student } func (diplômé * Diplômé) Testing () { fmt.Println (" Le contenu de l'examen est différent, l'examen est en cours ..... \ n ") }
L'héritage facilite la programmation
1) La réutilisabilité du code est améliorée
2) L'évolutivité et la maintenabilité du code sont améliorées
Discussion approfondie sur l'héritage
1) La structure peut utiliser tous les champs et toutes les méthodes de la structure anonyme imbriquée, c'est-à-dire que les champs et les méthodes avec des lettres majuscules ou minuscules peuvent être utilisés. 【Illustration】
2) L'accès au champ de structure anonyme peut être simplifié, comme le montre la figure
Résumé du code ci-dessus
(1) Lorsque nous accédons directement au champ ou à la méthode via b, le processus d'exécution est le suivant. Par exemple, b.Name
(2) Le compilateur verra d'abord si le type correspondant à b est Nom, s'il y en a, puis appelez directement B
S'il n'y a pas de champ Nom (3) du type, accédez à la structure anonyme A incorporée dans B pour voir si le champ Nom est déclaré. Si c'est le cas, appelez-le s'il ne continue pas la recherche. S'il n'est pas trouvé, signalez une erreur.
3) Lorsque la structure et la structure anonyme ont le même champ ou la même méthode, le compilateur utilise le principe d'accès le plus proche pour accéder. Si vous souhaitez accéder au champ et à la méthode de la structure anonyme, vous pouvez les distinguer par le nom de la structure anonyme [exemple]
4) La structure est intégrée dans deux (ou plus) structures anonymes. Par exemple, si deux structures anonymes ont les mêmes champs et méthodes (en même temps, la structure elle-même n'a pas de champs et méthodes avec le même nom), vous devez explicitement spécifier l'anonymat lors de l'accès Nom de la structure, sinon erreur de compilation. 【Illustration】
5) Si une structure imbrique une structure nommée, ce modèle est une combinaison. S'il s'agit d'une relation de combinaison, lors de l'accès aux champs ou aux méthodes de la structure combinée, vous devez apporter le nom de la structure
6) Structure anonyme imbriquée Après le corps, vous pouvez également spécifier directement la valeur de chaque champ de structure anonyme lors de la création de la variable de structure (instance)
Le champ anonyme de la structure de pratique est le type de données de base, comment y accéder, ce que le code suivant génère
Explication
1) Si une structure a un champ anonyme de type int, il ne peut pas être le second.
2) Si vous devez avoir plusieurs champs int, vous devez spécifier un nom pour le champ int
Programmation orientée objet - héritage
multiple Description de l' héritage multiple
Si une structure imbrique plusieurs structures anonymes, la structure peut accéder directement aux champs et aux méthodes de la structure anonyme imbriquée, réalisant ainsi l'héritage multiple.
Démonstration de
cas à travers un cas pour illustrer l'utilisation de l'héritage multiple
Détails de l'héritage multiple
1) Si la structure anonyme intégrée a le même nom de champ ou nom de méthode, elle doit être distinguée par le nom du type de structure anonyme lors de l'accès. [Démonstration de cas]
2) Afin d'assurer la simplicité du code, il est recommandé d'essayer de ne pas utiliser l'héritage multiple