Rumah  >  Artikel  >  pembangunan bahagian belakang  >  kaedah golang mengatasi

kaedah golang mengatasi

WBOY
WBOYasal
2023-05-16 16:53:071103semak imbas

Golang ialah bahasa pengaturcaraan moden dengan konsep reka bentuk yang sangat ringkas dan cekap. Di Golang, kaedah overriding adalah konsep yang sangat penting, terutamanya dalam pengaturcaraan berorientasikan objek. Penulisan semula kaedah boleh membantu kami mengelakkan masalah pertindihan kod dan meningkatkan kebolehgunaan semula program dan kebolehselenggaraan.

Penulisan semula kaedah merujuk kepada melaksanakan semula kaedah sedia ada dalam kelas induk dalam subkelas untuk memenuhi keperluan unik subkelas. Di Golang, pelaksanaan kaedah overriding adalah sangat mudah. ​​Kita hanya perlu mentakrifkan kaedah dengan nama yang sama dengan kelas induk dalam subkelas. Apabila kita memanggil kaedah ini, kaedah dalam subkelas akan mengatasi kaedah dalam kelas induk.

Berikut ialah contoh mudah yang menunjukkan cara untuk mengatasi kaedah kelas induk dalam subkelas:

package main

import(
    "fmt"
)

type Animal struct {
    name string
    age int
}

func (a *Animal) SayHello(){
    fmt.Println("Hello, I am ", a.name)
}

type Cat struct {
    Animal
}

func (c *Cat) SayHello(){
    fmt.Println("Meow, I am ", c.name)
}

func main() {
    a := Animal{name: "Tom", age: 3}
    c := Cat{Animal: a}
    a.SayHello() //输出Hello, I am Tom
    c.SayHello() //输出Meow, I am Tom
}

Dalam contoh di atas, kami mentakrifkan kelas Haiwan dan kelas Kucing . Dalam kelas Haiwan, kami mentakrifkan kaedah SayHello untuk mengeluarkan nama Haiwan. Dalam kelas Cat, kami mentakrifkan semula kaedah SayHello untuk mengeluarkan nama Cat. Apabila kita mencipta objek Animal dan Cat dan memanggil kaedah SayHello mereka masing-masing, kita akan mendapati objek Animal memanggil kaedah SayHello dalam kelas Animal, dan objek Cat memanggil kaedah SayHello dalam kelas Cat. Ini kerana kaedah SayHello dalam kelas Cat mengatasi kaedah SayHello dalam kelas Animal, jadi apabila dipanggil, kaedah subclass mengatasi kaedah kelas induk.

Selain contoh di atas, kami juga boleh menggunakan kata kunci super untuk memanggil kaedah dalam kelas induk. Di Golang, kaedah menggunakan kata kunci super adalah serupa dengan kaedah dalam bahasa seperti Java dan Python, yang digunakan untuk memanggil kaedah sedia ada dalam kelas induk. Dengan cara ini, kaedah dalam kelas induk boleh ditulis semula dalam subkelas dan kaedah sedia ada boleh dipanggil dalam subkelas untuk mengelakkan masalah pertindihan kod.

Berikut ialah contoh menggunakan kata kunci super, menunjukkan cara memanggil kaedah sedia ada dalam kelas induk dalam subkelas:

package main

import(
    "fmt"
)

type Animal struct {
    name string
    age int
}

func (a *Animal) SayHello(){
    fmt.Println("Hello, I am ", a.name)
}

type Cat struct {
    Animal
}

func (c *Cat) SayHello(){
    fmt.Println("Meow, I am ", c.name)
    c.Animal.SayHello()
}

func main() {
    a := Animal{name: "Tom", age: 3}
    c := Cat{Animal: a}
    a.SayHello() //输出Hello, I am Tom
    c.SayHello() 
    //输出:
    //Meow, I am Tom
    //Hello, I am Tom
}

Dalam contoh di atas, kami mentakrifkan kelas Haiwan dan kelas Cat, sama seperti dalam contoh sebelumnya. Perbezaannya ialah kita memanggil kaedah SayHello kelas induk Haiwan dalam kaedah SayHello kelas Cat untuk mengelakkan masalah pertindihan kod.

Melalui contoh di atas, kita dapat melihat bahawa pelaksanaan penulisan semula kaedah dalam Golang adalah sangat mudah Anda hanya perlu mentakrifkan kaedah dengan nama yang sama dengan kelas induk dalam subkelas. Pada masa yang sama, kami juga boleh menggunakan kata kunci super untuk memanggil kaedah dalam kelas induk untuk mengelakkan masalah pertindihan kod. Kaedah ini boleh membantu kami meningkatkan kebolehgunaan semula dan kebolehselenggaraan program, menjadikan kod lebih mantap dan boleh dipercayai.

Atas ialah kandungan terperinci kaedah golang mengatasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn