Antara muka fungsional dan kelas abstrak kedua-duanya digunakan untuk kebolehgunaan semula kod, tetapi ia dilaksanakan dalam cara yang berbeza: antara muka berfungsi melalui fungsi rujukan dan kelas abstrak melalui warisan. Antara muka berfungsi tidak boleh dibuat instantiated, tetapi kelas abstrak boleh. Antara muka berfungsi mesti melaksanakan semua kaedah yang diisytiharkan, manakala kelas abstrak hanya boleh melaksanakan beberapa kaedah.
Persamaan dan perbezaan antara antara muka berfungsi Go dan kelas abstrak
Dalam bahasa Go, antara muka berfungsi dan kelas abstrak ialah dua konsep penting, kedua-duanya digunakan untuk mewakili tingkah laku dan menyediakan kebolehgunaan semula kod. Walau bagaimanapun, kedua-duanya berbeza dalam senario pelaksanaan dan penggunaan.
Antara Muka Fungsian
Antara muka berfungsi ialah jenis yang merujuk fungsi dengan tandatangan tertentu. Ia mentakrifkan parameter input dan output fungsi, tetapi tidak perlu melaksanakan badan fungsi.
Sintaks:
type fnType func(parameters) (returnType)
Contoh:
type Handler func(w http.ResponseWriter, r *http.Request)
Kelas abstrak
Kelas abstrak ialah kelas yang hanya mengandungi pengisytiharan tanpa pelaksanaan. Ia mentakrifkan antara muka yang memerlukan subkelas untuk melaksanakan pengisytiharan ini.
Sintaks:
type Interface interface { Method1() Method2() }
Persamaan dan Perbezaan
Kesamaan:
Perbezaan:
func
关键字,而抽象类使用 interface
kata kunci. Kes praktikal
Antara muka berfungsi:
Anda boleh menggunakan antara muka berfungsi untuk mencipta kod gandingan longgar, membenarkan komponen berbeza menggunakan pelaksanaan berbeza.
type Shape interface { Area() float64 } type Square struct { Side float64 } func (s *Square) Area() float64 { return s.Side * s.Side } type Circle struct { Radius float64 } func (c *Circle) Area() float64 { return math.Pi * c.Radius * c.Radius } func CalculateArea(shapes []Shape) float64 { totalArea := 0.0 for _, shape := range shapes { totalArea += shape.Area() } return totalArea }
Kelas abstrak:
Anda boleh menggunakan kelas abstrak untuk mentakrifkan gelagat awam dan membenarkan subkelas melaksanakan atau mengatasi gelagat ini mengikut keperluan.
rreeeeAtas ialah kandungan terperinci Perbincangan mendalam tentang persamaan dan perbezaan antara antara muka berfungsi Golang dan kelas abstrak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!