Pelaksanaan dan prinsip asas polimorfisme dan enkapsulasi fungsi Golang

WBOY
Lepaskan: 2023-05-16 08:39:23
asal
1490 orang telah melayarinya

Polimorfisme dan enkapsulasi fungsi Golang ialah ciri pengaturcaraan berorientasikan objek yang penting di Golang. Di Golang, polimorfisme fungsi dan enkapsulasi boleh dicapai melalui sarang tanpa nama bagi jenis dan struktur antara muka. Seterusnya, artikel ini akan menganalisis pelaksanaan dan prinsip asas polimorfisme dan enkapsulasi fungsi Golang.

1. Pelaksanaan polimorfisme

  1. Jenis antara muka melaksanakan polimorfisme

Di Golang, polimorfisme fungsi boleh direalisasikan melalui jenis antara muka. Jenis antara muka sebenarnya ialah koleksi tandatangan kaedah Apabila jenis melaksanakan semua kaedah dalam antara muka, contoh jenis boleh diberikan kepada pembolehubah jenis antara muka. Pendekatan ini serupa dengan antara muka atau kelas abstrak dalam bahasa lain. Berikut ialah contoh:

type Animal interface {
    Speak() string
}

type Dog struct {}

func (d Dog) Speak() string {
    return "Woof!"
}

type Cat struct {}

func (c Cat) Speak() string {
    return "Meow!"
}

func main() {
    var a Animal
    a = Dog{}
    fmt.Println(a.Speak()) // 输出 "Woof!"
    a = Cat{}
    fmt.Println(a.Speak()) // 输出 "Meow!"
}
Salin selepas log masuk

Dalam contoh di atas, polimorfisme dilaksanakan melalui jenis antara muka. Pembolehubah jenis Haiwan a ditakrifkan dalam fungsi utama, yang boleh menunjuk kepada contoh jenis Anjing dan Kucing yang melaksanakan antara muka Haiwan. Apabila ubah a menghala ke tika Dog, output ialah "Woof!", dan apabila ia menunjuk ke tika Cat, output ialah "Meow!".

  1. Jenis antara muka kosong melaksanakan universal bekas

Jenis antara muka kosong (antara muka{}) dalam Golang boleh menerima sebarang jenis nilai Kerana jenis antara muka kosong tidak mengandungi sebarang kaedah, sebarang contoh jenis boleh diberikan kepada pembolehubah jenis antara muka kosong. Berikut ialah contoh:

func PrintType(v interface{}) {
    fmt.Printf("Value: %v, Type: %T
", v, v)
}

func main() {
    PrintType(42)    // 输出 "Value: 42, Type: int"
    PrintType("Hello, World!")    // 输出 "Value: Hello, World!, Type: string"
    PrintType(0.618)    // 输出 "Value: 0.618, Type: float64"
}
Salin selepas log masuk

Dalam contoh di atas, bekas universal dilaksanakan melalui jenis antara muka kosong. Fungsi PrintType ditakrifkan, yang menerima nilai apa-apa jenis sebagai parameter dan mencetak nilai dan jenis nilai yang dimiliki. Jika fungsi PrintType dipanggil dengan contoh jenis yang berbeza dalam fungsi utama, contoh dan jenisnya boleh dikeluarkan secara normal.

2. Pelaksanaan dan prinsip asas pengkapsulan

Di Golang, ciri pengkapsulan direalisasikan melalui sarang tanpa nama struktur. Penyarang struktur adalah serupa dengan pewarisan Satu struktur boleh menyarang struktur lain, dengan itu merangkum pembolehubah ahli dan kaedah dalam struktur. Berikut ialah contoh:

type Person struct {
    Name string
    Age int
}

type Employee struct {
    Person
    Salary int
}

func main() {
    e := Employee{Person{"Alice", 26}, 3000}
    fmt.Printf("%v, Salary: %d
", e.Person, e.Salary)
    fmt.Printf("Name: %s, Age: %d, Salary: %d
", e.Name, e.Age, e.Salary)
}
Salin selepas log masuk

Dalam contoh di atas, ciri enkapsulasi dicapai melalui sarang tanpa nama struktur. Struktur Orang ditakrifkan, yang mengandungi dua pembolehubah ahli: Nama dan Umur, dan struktur Pekerja, yang mengandungi struktur Orang dan pembolehubah ahli Gaji. Contoh Pekerja e ditakrifkan dalam fungsi utama, yang mengandungi struktur Orang dan pembolehubah ahli Gaji. Pembolehubah ahli contoh e boleh diakses masing-masing melalui e.Nama, e.Umur dan e.Gaji.

Prinsip asas penyusunan struktur ialah: apabila struktur menyarangkan struktur lain, pembolehubah ahli dan kaedah dalam struktur bersarang akan menjadi pembolehubah ahli dan kaedah struktur luar. Oleh itu, struktur luar boleh terus mengakses pembolehubah ahli dan kaedah dalam struktur bersarang, atau ia boleh mengakses pembolehubah dan kaedah ahli dalam struktur bersarang melalui nama jenis struktur bersarang.

3. Ringkasan

Polimorfisme dan enkapsulasi fungsi Golang dicapai melalui sarang tanpa nama bagi jenis dan struktur antara muka. Jenis antara muka boleh merealisasikan polimorfisme, dan jenis antara muka kosong boleh merealisasikan bekas sejagat struktur tanpa nama boleh merealisasikan enkapsulasi, dan pengkapsulan dan perlindungan maklumat boleh dicapai melalui sarang pembolehubah dan kaedah ahli. Dengan menganalisis pelaksanaan polimorfisme dan enkapsulasi fungsi Golang serta prinsip asas, anda boleh lebih memahami ciri pengaturcaraan berorientasikan objek bagi bahasa Golang.

Atas ialah kandungan terperinci Pelaksanaan dan prinsip asas polimorfisme dan enkapsulasi fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!