Dziedzictwo w Golang
Dziedzictwo w Golang jest sposobem na stworzenie klasy dziecięcej, która jest zmodyfikowaną wersją istniejącej lub macierzystej klasy. Nowo utworzona klasa przyjmuje właściwości istniejącej klasy nadrzędnej. Podklasa lub klasa dziecięca może również modyfikować lub dodać nowe właściwości w klasie nadrzędnej.
Składnia do dziedziczenia w Golang
Aby odziedziczyć po klasie rodzicielskiej w Golang, używamy struct Słowo kluczowe i osadzaj klasę nadrzędną w klasie dziecięcej. Oto przykład:
Wpisz nadrzędny struct
Property1 String
Property2 int
Wpisz Child Struct
Rodzic
Property3 float32
Powyższa składnia ma strukturę dziecka, która osadza strukturę nadrzędną, co oznacza, że dziedziczy wszystkie jej właściwości i metody. Dziecko struktura ma również nową nieruchomość o nazwie Property3.
Dlaczego Golang nie popiera dziedzictwa
W tradycyjnym programowaniu obiektowym dziedziczenie jest podstawową koncepcją, która obejmuje dziedziczenie właściwości od klasy rodzicielskiej do klasy dziecka. Jednak od tego czasu Golang nie obsługuje zajęć, Dziedziczenie jest wdrażane przy użyciu osadzania struktury.
W Golang struktury nie można rozszerzyć bezpośrednio, dlatego używamy kompozycji do konstruowania nowych obiektów za pomocą struct. Dlatego dokładne jest stwierdzenie, że Golang nie zapewnia natywnego wsparcia dziedziczenia, ale raczej wspiera kompozycję jako alternatywę.
Jak osiągnąć dziedzictwo w Golang za pomocą struktury osadzania
W Golang dziedzictwo osiąga się poprzez mechanizm zwany Osadzanie struktury. To pozwala nam osadzić jedną strukturę wewnątrz drugiej, co powoduje relację jak klasa rodzica i dzieci. Struktura dziecka może następnie uzyskać dostęp do pól i metod struktury macierzystej, tak jakby były częścią własnej definicji.
Oto przykład, jak osiągnąć dziedzictwo w Golang za pomocą osadzania struktury:
Typ osobę struct
Nazwa ciąg
wiek int
Wpisz STRUCT PRACOWNIKA
Osoba // osadzanie osoby struktury pracownika
Empid int
Wynagrodzenie Float64
W powyższym kodzie struktura osoby jest osadzona przez strukturę pracownika przy użyciu nazwy pola osoby bez typu, co oznacza, że osadza samą strukturę. Stwarza to relację rodzic-dziecko między dwoma strukturami, gdzie struktura pracownika jest dzieckiem, a osobą strukturą jest rodzic.
Teraz wszelkie pola lub metody zdefiniowane w strukturze osoby można uzyskać od struktury pracownika. Na przykład możemy uzyskać dostęp do pola nazwy struktury osoby ze struktury pracownika za pomocą notacji DOT:
e: = pracownik osoba nazwa: „kash”, wiek: 24, 20, 1000
fmt.Println (e.nazwa)
Podobnie możemy zdefiniować metody w strukturze osoby, do której można uzyskać dostęp ze struktury pracownika:
FUNC (p *osoba) wprowadzać ()
fmt.Printf („Cześć, nazywam.\ n ", p.Nazwa, s.wiek)
func main ()
e: = pracownik osoba nazwa: „kash”, wiek: 24, 20, 1000
mi.wprowadzić()
Przykład 1: Program Golang, który pokazuje dziedzictwo w osadzaniu struktury
Pakiet Main
importować „fmt”
Typ osobę struct
Nazwa ciąg
wiek int
Wpisz STRUCT PRACOWNIKA
Osoba // osadzanie osoby struktury pracownika
Empid int
Wynagrodzenie Float64
FUNC (p *osoba) wprowadzać ()
fmt.Printf („Cześć, nazywam.\ n ", p.Nazwa, s.wiek)
func (e *pracownik) wprowadzać ()
fmt.Printf („Cześć, nazywam. Mój identyfikator pracownika to %D, a moja pensja kosztuje.2f.\ n ", e.Nazwa, e.Wiek, e.Empid, e.wynagrodzenie)
func main ()
e: = pracownik osoba nazwa: „kash”, wiek: 24, 20, 1000
fmt.Println (e.nazwa)
mi.wprowadzić()
Tutaj zdefiniowaliśmy strukturę osoby i pracownika, który osadza osobę strukturę. Następnie definiujemy wprowadzić() Metoda na strukturze osoby, do której możemy uzyskać dostęp do struktury pracownika. W Main () stworzyliśmy nową instancję pracownika i wykazaliśmy, w jaki sposób możemy uzyskać dostęp do dziedzin i metod struktury osadzonej.
Przykład 2: Program Golang, aby pokazać wiele dziedziczeń dla struktury
Pakiet Main
importować „fmt”
Typ osobę struct
Nazwa ciąg
wiek int
Wpisz Student STRUCT
Osoba // osadzanie się osobą strukturę w strukturze studenta
Rollno int
Typ nauczyciela struktura
Osoba // osadzanie osoby struktura w strukturze nauczyciela
Empid int
FUNC (p *osoba) wprowadzać ()
fmt.Printf („Cześć, nazywam.\ n ", p.Nazwa, s.wiek)
FUNC (S *Student) Study ()
fmt.Printf („%S uczy się.\ n ", s.nazwa)
func (t *nauczyciel) naucz ()
fmt.Printf („%S uczy.\ n ", t.nazwa)
func main ()
S: = Student osoba nazwa: „kash”, wiek: 24, 1001
T: = Nauczyciel osoba nazwa: „Sam”, wiek: 30, 2001
S.wprowadzić()
S.badanie()
T.wprowadzić()
T.uczyć()
W powyższym przykładzie definiujemy strukturę osoby i dwie inne struktury, uczeń i nauczyciel, które osadzają osobę strukturę. Definiujemy również metody wprowadzania (), studiów () i nauczania () odpowiednio o strukturach osoby, ucznia i nauczycieli.
W Main () stworzyliśmy nowe przypadki zarówno ucznia, jak i nauczyciela i wykazaliśmy, w jaki sposób możemy uzyskać dostęp do dziedzin i metod struktury osadzonej, a także metod specyficznych dla każdej struktury.
Wniosek
Dziedziczenie jest niezbędną koncepcją w programowaniu obiektowym, a Golang zapewnia wsparcie dla pojedynczego dziedziczenia poprzez osadzanie struktury. W przypadku wielokrotnego dziedziczenia w Golang stosuje się metodę składu. W tym artykule obejmuje sposób osiągnięcia dziedziczenia za pomocą metody składu w Golang. Aby uzyskać więcej informacji na temat dziedziczenia w Golang, przeczytaj artykuł.