Rumah > Artikel > pembangunan bahagian belakang > Bagaimana Mencapai Polimorfisme Tanpa Warisan Tradisional?
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{...} }
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() }
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!