Maison >développement back-end >Golang >Implémentation de classe abstraite de la fonction Golang dans la programmation orientée objet
Dans Golang, la fonctionnalité de classe abstraite peut être obtenue en implémentant une interface et en définissant une fonction : définissez l'interface et déclarez la signature de la méthode. Définir les fonctions et implémenter les méthodes d'interface. Instanciez la structure et appelez la fonction. Dans le cas réel, l'interface Shape et la fonction de forme spécifique correspondante sont utilisées pour dessiner différentes formes.
En programmation orientée objet (POO), une classe abstraite est une classe qui ne peut pas être instanciée, mais qui peut être héritée par des sous-classes. Les classes abstraites contiennent généralement des méthodes abstraites, qui sont des fonctions qui déclarent uniquement une signature de méthode mais aucune implémentation.
Dans Golang, les classes abstraites ne peuvent pas être déclarées, mais les fonctions peuvent être utilisées pour implémenter des fonctions abstraites similaires. La méthode spécifique est la suivante :
1. Définir une interface :
type MyInterface interface { DoSomething() }
2 Définir une fonction :
func (f *MyStruct) DoSomething() { // 具体的实现 }
3. Implémenter l'interface :
type MyStruct struct { f func() } func (s *MyStruct) DoSomething() { s.f() }
4. la fonction :
s := &MyStruct{f: func() { fmt.Println("Do Something") }} s.DoSomething() // 输出: Do Something
Cas pratique :
Supposons que nous ayons un programme de dessin qui doit dessiner plusieurs formes, mais la logique de dessin de forme spécifique est différente. Nous pouvons utiliser des fonctions pour implémenter des classes abstraites pour résoudre ce problème :
1. Définir l'interface Shape :
type Shape interface { Draw() }
2 Définir des fonctions de formes spécifiques :
func DrawCircle(x, y, radius float64) { // 绘制圆形 } func DrawSquare(x, y, width float64) { // 绘制正方形 } func DrawTriangle(x1, y1, x2, y2, x3, y3 float64) { // 绘制三角形 }
3. 4. Dessinez des graphiques en utilisant des formes spécifiques :
type Circle struct { x, y, radius float64 } func (c *Circle) Draw() { DrawCircle(c.x, c.y, c.radius) } type Square struct { x, y, width float64 } func (s *Square) Draw() { DrawSquare(s.x, s.y, s.width) }
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!