Maison > développement back-end > Golang > le corps du texte

Comment Go parvient-il au polymorphisme sans héritage traditionnel ?

Patricia Arquette
Libérer: 2024-11-06 19:12:02
original
198 Les gens l'ont consulté

How Does Go Achieve Polymorphism Without Traditional Inheritance?

Polymorphisme en Go Lang : exploration des concepts orientés objet

Dans Go, un langage de programmation connu pour sa simplicité et sa concurrence, le concept de polymorphisme prend une forme unique. Le polymorphisme, un élément essentiel de la programmation orientée objet, permet aux objets de différentes classes d'être traités comme des objets de leur classe parent ou interface.

Considérez le scénario suivant dans un langage orienté objet traditionnel :

type Foo {
   ...
}

type Bar : Foo {
   ...
}

func getFoo() Foo {
   return Bar{...}
}
Copier après la connexion

Dans un tel scénario, getFoo() devrait renvoyer de manière transparente une instance de la classe Bar, en tirant parti du polymorphisme. Cependant, dans Go, cette approche entraîne une erreur, soulignant que getFoo() doit renvoyer une instance de la classe Foo.

L'approche de Go en matière de polymorphisme diffère légèrement. Pour reproduire la fonctionnalité décrite précédemment, Go utilise des interfaces et une composition :

package main

import "fmt"

type Foo interface {
   printFoo()
}

type FooImpl struct {

}

type Bar struct {
   FooImpl
}

type Bar2 struct {
   FooImpl
}

func (f FooImpl)printFoo(){
    fmt.Println("Print Foo Impl")
}

func getFoo() Foo {
   return Bar{}
}

func main() {
    fmt.Println("Hello, playground")
    b := getFoo()
    b.printFoo()
}
Copier après la connexion

En implémentant l'interface Foo et en composant la structure FooImpl, le type Bar assume les responsabilités de l'interface Foo. Par conséquent, getFoo() peut renvoyer une instance du type Bar, qui adhère à l'interface Foo.

Grâce à ces mécanismes, Go fournit une forme de polymorphisme qui, bien que distinct de l'héritage orienté objet traditionnel, permet le traitement dynamique des objets en fonction de leurs interfaces.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!