Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara melaksanakan enkapsulasi dan pewarisan dalam bahasa Go

Cara melaksanakan enkapsulasi dan pewarisan dalam bahasa Go

王林
王林asal
2023-07-23 20:17:07823semak imbas

Cara melaksanakan enkapsulasi dan pewarisan dalam bahasa Go

Pengenkapsulan dan pewarisan ialah dua konsep penting dalam pengaturcaraan berorientasikan objek. Ia boleh menjadikan kod lebih modular dan boleh diselenggara, dan juga memberikan kemudahan untuk penggunaan semula kod. Artikel ini akan memperkenalkan cara melaksanakan pengkapsulan dan pewarisan dalam bahasa Go dan memberikan contoh kod yang sepadan.

  1. Encapsulation

Encapsulation ialah untuk merangkum data dan fungsi, menyembunyikan butiran pelaksanaan dan hanya mendedahkan antara muka yang diperlukan untuk kegunaan luaran. Dalam bahasa Go, enkapsulasi dicapai melalui pengecam yang dieksport dan tidak dieksport. Pengecam dengan huruf besar awal boleh diakses daripada pakej lain, manakala pengecam dengan huruf awal huruf kecil hanya boleh diakses dalam pakej semasa.

Berikut ialah contoh kod yang menunjukkan cara merangkum dalam bahasa Go:

package main

import "fmt"

// 定义一个结构体
type Person struct {
    name string // 首字母小写,非导出标识符
    age  int    // 首字母小写,非导出标识符
}

// 设置姓名
func (p *Person) SetName(name string) {
    p.name = name
}

// 获取姓名
func (p *Person) GetName() string {
    return p.name
}

func main() {
    p := Person{}
    p.SetName("John")
    fmt.Println(p.GetName()) // Output: John
}

Dalam kod di atas, kami mentakrifkan struktur Orang, di mana huruf pertama medan nama dan umur adalah huruf kecil, menunjukkan bahawa ia adalah Pengecam tidak dieksport, hanya boleh diakses dalam pakej semasa. Tetapkan dan dapatkan nilai medan nama melalui kaedah SetNam dan GetName. Dalam fungsi utama, kami mencipta p pembolehubah jenis Orang dan tetapkan serta dapatkan nilai medan nama dengan memanggil kaedah SetNam dan GetName.

  1. Pewarisan

Pewarisan ialah cara untuk mencapai penggunaan semula kod dalam pengaturcaraan berorientasikan objek boleh dilanjutkan melalui pewarisan. Dalam bahasa Go, tiada kata kunci warisan eksplisit, tetapi kesan warisan boleh dicapai melalui medan tanpa nama dan struktur bersarang.

Berikut ialah contoh kod yang menunjukkan cara melaksanakan pewarisan dalam bahasa Go:

package main

import "fmt"

// 定义一个基类
type Animal struct {
    name string
}

// 基类方法
func (a *Animal) move() {
    fmt.Println("Moving...")
}

// 定义一个派生类
type Dog struct {
    Animal // 匿名字段,实现继承
    breed  string
}

// 派生类方法
func (d *Dog) bark() {
    fmt.Println("Barking...")
}

func main() {
    d := Dog{
        Animal: Animal{
            name: "Tom",
        },
        breed: "Golden Retriever",
    }
    d.move() // Output: Moving...
    d.bark() // Output: Barking...
    fmt.Println(d.name) // Output: Tom
}

Dalam kod di atas, kami mentakrifkan kelas asas Haiwan, yang mengandungi kaedah pergerakan. Kemudian kelas terbitan Anjing ditakrifkan dan kelas asas Haiwan dibenamkan melalui medan tanpa nama untuk mencapai kesan pewarisan. Dalam kelas terbitan Anjing, kami mentakrifkan kaedah kulit kayu. Dalam fungsi utama, kami mencipta pembolehubah d jenis Anjing dan memanggil kaedah gerakan dan kulit kayu untuk mengesahkan kesan pewarisan.

Ringkasan

Melalui enkapsulasi dan pewarisan, kami boleh memodulasi kod dan meningkatkan kebolehselenggaraan dan kebolehgunaan semula kod. Dalam bahasa Go, enkapsulasi boleh dicapai melalui pengecam yang dieksport dan tidak dieksport, dan warisan boleh dicapai melalui medan tanpa nama dan struktur bersarang. Ciri-ciri ini menjadikan bahasa Go berfungsi dengan baik dalam pengaturcaraan berorientasikan objek.

Atas ialah kandungan terperinci Cara melaksanakan enkapsulasi dan pewarisan dalam bahasa Go. 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