Wie erreicht Go Polymorphismus ohne traditionelle Vererbung?

Patricia Arquette
Freigeben: 2024-11-06 19:12:02
Original
197 Leute haben es durchsucht

How Does Go Achieve Polymorphism Without Traditional Inheritance?

Polymorphismus in Go Lang: Erforschung objektorientierter Konzepte

In Go, einer Programmiersprache, die für ihre Einfachheit und Parallelität bekannt ist, nimmt das Konzept des Polymorphismus eine einzigartige Form an. Polymorphismus, ein Grundbestandteil der objektorientierten Programmierung, ermöglicht die Behandlung von Objekten verschiedener Klassen als Objekte ihrer übergeordneten oder Schnittstellenklasse.

Stellen Sie sich das folgende Szenario in einer traditionellen objektorientierten Sprache vor:

type Foo {
   ...
}

type Bar : Foo {
   ...
}

func getFoo() Foo {
   return Bar{...}
}
Nach dem Login kopieren

In einem solchen Szenario wird erwartet, dass getFoo() nahtlos eine Instanz der Bar-Klasse zurückgibt und dabei Polymorphismus nutzt. In Go führt dieser Ansatz jedoch zu einem Fehler, der betont, dass getFoo() eine Instanz der Foo-Klasse zurückgeben muss.

Gos Ansatz zum Polymorphismus unterscheidet sich geringfügig. Um die zuvor beschriebene Funktionalität zu replizieren, nutzt Go Schnittstellen und Zusammensetzung:

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()
}
Nach dem Login kopieren

Durch die Implementierung der Foo-Schnittstelle und die Erstellung der FooImpl-Struktur übernimmt der Bar-Typ die Verantwortlichkeiten der Foo-Schnittstelle. Folglich kann getFoo() eine Instanz des Bar-Typs zurückgeben, die sich an die Foo-Schnittstelle hält.

Durch diese Mechanismen stellt Go eine Form von Polymorphismus bereit, die sich zwar von der herkömmlichen objektorientierten Vererbung unterscheidet, aber Folgendes ermöglicht die dynamische Behandlung von Objekten anhand ihrer Schnittstellen.

Das obige ist der detaillierte Inhalt vonWie erreicht Go Polymorphismus ohne traditionelle Vererbung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!