Vererbung in Golang
Vererbung in Golang ist eine Möglichkeit, eine untergeordnete Klasse zu erstellen, die eine modifizierte Version einer vorhandenen oder übergeordneten Klasse ist. Die neu erstellte Klasse nimmt die Eigenschaften der vorhandenen übergeordneten Klasse an. Die Unterklasse oder die untergeordnete Klasse kann auch einige neue Eigenschaften in der übergeordneten Klasse ändern oder hinzufügen.
Syntax zum Erben in Golang
Um von einer übergeordneten Klasse in Golang zu erben, verwenden wir die Struktur Schlüsselwort und die übergeordnete Klasse in der untergeordneten Klasse einbetten. Hier ist ein Beispiel:
Geben Sie die Elternstruktur ein
Eigenschaft1 String
Property2 int
Geben Sie untergeordnete Struktur ein
Elternteil
Property3 Float32
Die obige Syntax hat eine untergeordnete Struktur, die die Elternstruktur einbettet, was bedeutet, dass sie alle Eigenschaften und Methoden erbt. Die Kinderstruktur verfügt auch über eine neue Immobilie namens Property3.
Warum Golang die Erbschaft nicht unterstützt
In traditionellen objektorientierten Programmierung ist die Vererbung ein grundlegendes Konzept, das die Erbungseigenschaften von einer übergeordneten Klasse zu einer Kinderklasse beinhaltet. Aber seit Golang unterstützt keine Klassen, Die Vererbung wird unter Verwendung der Struktureinbettung implementiert.
In Golang können Strukturen nicht direkt erweitert werden. Daher verwenden wir die Zusammensetzung, um neue Objekte mithilfe der zu konstruieren Struktur. Daher ist es genau zu sagen, dass Golang keine native Unterstützung für die Vererbung bietet, sondern die Komposition als alternative Unterstützung unterstützt.
Wie man die Vererbung in Golang mithilfe der Struktureinbettung erreicht
In Golang wird die Vererbung durch einen Mechanismus genannt Struktureinbettung. Dies ermöglicht es uns, eine Struktur in eine andere einzubetten, was zu einer Beziehung wie einer Eltern- und Kinderklasse führt. Die Kinderstruktur kann dann auf die Felder und Methoden der Elternstruktur zugreifen, als ob sie Teil ihrer eigenen Definition wären.
Hier ist ein Beispiel dafür, wie die Vererbung in Golang unter Verwendung von Struct -Einbetten erreicht werden kann:
Typ Person struct
Name Zeichenfolge
Alter int
Geben Sie die Mitarbeiterstruktur ein
Person // Einbettung der Personstruktur innerhalb der Mitarbeiterstruktur
Empid int
Gehalt float64
Im obigen Code wird die Personstruktur durch die Mitarbeiterstruktur unter Verwendung des Feldnamens Person ohne Typ eingebettet, was impliziert, dass sie die Struktur selbst einbettet. Dies schafft eine Eltern-Kind-Beziehung zwischen den beiden Strukturen, in denen die Mitarbeiterstruktur das Kind ist, und die Personstruktur der Elternteil ist.
Nun können auf alle in der Personstruktur definierten Felder oder Methoden aus der Mitarbeiterstruktur zugegriffen werden. Zum Beispiel können wir mit der DOT -Notation auf das Feld des Namens der Person aus der Mitarbeiterstruktur zugreifen:
E: = Mitarbeiter Person Name: "Kash", Alter: 24, 20, 1000
fmt.Println (e.Name)
In ähnlicher Weise können wir Methoden in der Personstruktur definieren, auf die aus der Mitarbeiterstruktur zugegriffen werden kann:
func (p *person) intect ()
fmt.Printf ("Hallo, mein Name ist %s und ich bin %d Jahre alt.\ n ", p.Name, p.Alter)
func main ()
E: = Mitarbeiter Person Name: "Kash", Alter: 24, 20, 1000
e.einführen()
Beispiel 1: Golang -Programm, um Vererbung bei der Struktureinbettung zu zeigen
Paket Main
importieren "fmt"
Typ Person struct
Name Zeichenfolge
Alter int
Geben Sie die Mitarbeiterstruktur ein
Person // Einbettung der Personstruktur innerhalb der Mitarbeiterstruktur
Empid int
Gehalt float64
func (p *person) intect ()
fmt.Printf ("Hallo, mein Name ist %s und ich bin %d Jahre alt.\ n ", p.Name, p.Alter)
func (e *Mitarbeiter) intoucuce ()
fmt.Printf ("Hallo, mein Name ist %s und ich bin %d Jahre alt. Meine Mitarbeiter -ID ist %d und mein Gehalt beträgt % %.2f.\ n ", e.Name, e.Alter, e.Empid, e.Gehalt)
func main ()
E: = Mitarbeiter Person Name: "Kash", Alter: 24, 20, 1000
fmt.Println (e.Name)
e.einführen()
Hier haben wir eine Personstruktur und eine Mitarbeiterstruktur definiert, die die Personstruktur einbettet. Wir definieren dann die einführen() Methode zur Personstruktur, auf die wir von der Mitarbeiterstruktur zugreifen können. In main () haben wir eine neue Mitarbeiterinstanz erstellt und gezeigt, wie wir auf die Felder und Methoden der Struktur der eingebetteten Person zugreifen können.
Beispiel 2: Golang -Programm, um mehrere Erbschaften einer Struktur zu zeigen
Paket Main
importieren "fmt"
Typ Person struct
Name Zeichenfolge
Alter int
Geben Sie Schülerstrukturen ein
Person // Einbettung der Personstruktur innerhalb der Schülerstruktur
Rollno int
Geben Sie Lehrerstrukturen ein
Person // Einbettung der Personstruktur innerhalb der Lehrerstruktur
Empid int
func (p *person) intect ()
fmt.Printf ("Hallo, mein Name ist %s und ich bin %d Jahre alt.\ n ", p.Name, p.Alter)
func (s *student) study ()
fmt.Printf ("%S studiert.\ n ", s.Name)
func (t *lehrer) lehren ()
fmt.Printf ("%s lehrt.\ n ", t.Name)
func main ()
S: = Student Person Name: "Kash", Alter: 24, 1001
T: = Lehrer Person Name: "Sam", Alter: 30, 2001
S.einführen()
S.lernen()
T.einführen()
T.unterrichten()
Im obigen Beispiel definieren wir eine Personstruktur und zwei weitere Strukturen, Schüler und Lehrer, die die Personstruktur einbetten. Wir definieren auch die Methoden "introy (), study () und lehren () zu den Strukturen Person, Schüler und Lehrer.
In Main () haben wir neue Instanzen von Schüler und Lehrer erstellt und gezeigt, wie wir auf die Felder und Methoden der Struktur der eingebetteten Person zugreifen können, sowie die für jede Struktur spezifischen Methoden.
Abschluss
Die Vererbung ist ein wesentliches Konzept in der objektorientierten Programmierung, und Golang unterstützt die einzelne Vererbung durch Struktureinbettung. Für mehrere Vererbung in Golang wird die Zusammensetzungsmethode verwendet. Dieser Artikel behandelt, wie wir die Vererbung unter Verwendung der Zusammensetzungsmethode in Golang erreichen können. Weitere Informationen zur Vererbung in Golang finden Sie im Artikel.