Bagaimana Mencapai Polimorfisme Tanpa Warisan Tradisional?

Patricia Arquette
Lepaskan: 2024-11-06 19:12:02
asal
197 orang telah melayarinya

How Does Go Achieve Polymorphism Without Traditional Inheritance?

Polimorfisme dalam Go Lang: Meneroka Konsep Berorientasikan Objek

Dalam Go, bahasa pengaturcaraan yang terkenal dengan kesederhanaan dan keselarasannya, konsep polimorfisme mempunyai bentuk yang unik. Polimorfisme, ruji dalam pengaturcaraan berorientasikan objek, membenarkan objek pelbagai kelas dianggap sebagai objek induk atau kelas antara muka mereka.

Pertimbangkan senario berikut dalam bahasa berorientasikan objek tradisional:

type Foo {
   ...
}

type Bar : Foo {
   ...
}

func getFoo() Foo {
   return Bar{...}
}
Salin selepas log masuk

Dalam senario sedemikian, getFoo() dijangka dapat mengembalikan tika kelas Bar dengan lancar, memanfaatkan polimorfisme. Walau bagaimanapun, dalam Go, pendekatan ini menghasilkan ralat, menekankan bahawa getFoo() mesti mengembalikan tika kelas Foo.

Pendekatan Go terhadap polimorfisme berbeza sedikit. Untuk meniru fungsi yang diterangkan sebelum ini, Go menggunakan antara muka dan komposisi:

package main

import "fmt"

type Foo interface {
   printFoo()
}

type FooImpl struct {

}

type Bar struct {
   FooImpl
}

type Bar2 struct {
   FooImpl
}

func (f FooImpl)printFoo(){
    fmt.Println("Print Foo Impl")
}

func getFoo() Foo {
   return Bar{}
}

func main() {
    fmt.Println("Hello, playground")
    b := getFoo()
    b.printFoo()
}
Salin selepas log masuk

Dengan melaksanakan antara muka Foo dan mengarang struct FooImpl, jenis Bar memikul tanggungjawab antara muka Foo. Akibatnya, getFoo() boleh mengembalikan contoh jenis Bar, yang mematuhi antara muka Foo.

Melalui mekanisme ini, Go menyediakan satu bentuk polimorfisme yang, walaupun berbeza daripada warisan berorientasikan objek tradisional, membolehkan rawatan dinamik objek berdasarkan antara muka mereka.

Atas ialah kandungan terperinci Bagaimana Mencapai Polimorfisme Tanpa Warisan Tradisional?. 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
Artikel terbaru oleh pengarang
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!