Dans Go, la substitution de méthode permet de redéfinir les méthodes d'une classe de base dans une classe dérivée tout en gardant la même signature de méthode : utilisez le mot-clé override. La méthode remplacée doit avoir la même signature que la méthode de base. Le type de récepteur de la méthode remplacée doit être un sous-type du type de base.
Surcharge de fonctions dans Go
La substitution nous permet de définir de nouvelles implémentations de méthodes existantes dans des classes dérivées tout en préservant la signature de la méthode. Cela nous permet d'étendre les fonctionnalités de la classe de base sans changer son interface.
Syntaxe
Le remplacement dans Go utilise le mot-clé override
: override
关键字:
type MyStruct struct { baseStruct } func (m MyStruct) SomeMethod() {}
SomeMethod
方法将重写来自 baseStruct
的同名方法。
注意:
实战案例
假设我们有一个 Animal
基类,具有 Speak
方法:
type Animal struct { name string } func (a Animal) Speak() { fmt.Printf("%s speaks!\n", a.name) }
我们可以创建一个 Dog
派生类,该类扩展 Speak
方法以吠叫:
type Dog struct { Animal } func (d Dog) Speak() { fmt.Printf("%s barks!\n", d.name) }
在这里,Dog.Speak
方法重写了 Animal.Speak
package main import "fmt" type Animal struct { name string } func (a Animal) Speak() { fmt.Printf("%s speaks!\n", a.name) } type Dog struct { Animal } func (d Dog) Speak() { fmt.Printf("%s barks!\n", d.name) } func main() { a := Animal{name: "Animal"} a.Speak() // Output: Animal speaks! d := Dog{Animal{name: "Dog"}} d.Speak() // Output: Dog barks! }
SomeMethod
remplacera le même nom de la méthode baseStruct
. Remarque :
🎜Animal
avec une méthode Speak
: 🎜rrreee🎜Nous pouvons créer un Dog
qui étend la méthode Speak
pour aboyer : 🎜rrreee🎜Ici, la méthode Dog.Speak
remplace Animal Speak méthode, fournissant une implémentation spécifique au chien. 🎜🎜🎜Exemple🎜🎜rrreee
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!