Encapsulation
introduction de base
Golang a toujours les fonctionnalités d'héritage, d'encapsulation et de polymorphisme de la programmation orientée objet, mais la méthode d'implémentation est différente des autres langages OOP. Voyons comment Golang implémente l'encapsulation.
Présentation du package
L'encapsulation consiste à encapsuler les champs abstraits et les opérations sur les champs. Les données sont protégées en interne, et les autres packages du programme ne peuvent opérer sur les champs que par des opérations (méthodes) autorisées.
Avantages de l'encapsulation
- Masquer les détails de mise en œuvre.
- Les données peuvent être vérifiées et ainsi de suite.
Comment Golang incarne l'encapsulation
- Encapsulez les attributs dans la structure
- Grâce à la méthode, le package réalise l'encapsulation
Réalisation d'encapsulation
- La première lettre de la structure et le champ (attribut) sont minuscules (les autres packages ne peuvent pas être utilisés, similaires à private).
- Fournit une fonction de mode usine pour le package où se trouve la structure, avec la première lettre en majuscule. Similaire à un constructeur.
- Fournissez une méthode d'ensemble (similaire à public dans d'autres langues) avec la première lettre en majuscule, qui est utilisée pour juger et attribuer des valeurs aux attributs.
- Fournissez la méthode get avec la première lettre en majuscule pour obtenir la valeur de l'attribut.
Note spéciale: il n'y a pas d'accent particulier sur l'encapsulation dans le développement de Golang, qui n'est pas comme Java, donc Golang ne peut pas toujours être vu avec les caractéristiques grammaticales de Java. Golang lui-même simplifie les fonctionnalités orientées objet.
Implémentation du code: student.go
package model
import(
"fmt"
)
type student struct{
name string
age int
}
func NewStudent(name string,age int) *student{
return &student{
name : name,
age : age,
}
}
func (this *student) GetName()string{
return this.name
}
func (this *student) SetName(name string){
this.name = name
}
func (this *student) GetAge()int{
return this.age
}
func (this *student) SetAge(age int){
//对年龄合法性校验
if age > 0 && age <150{
this.age = age
}else{
fmt.Println("年龄不合法...")
}
}
test.go
package main
import(
"fmt"
"go_code/OOP/model"
)
func main() {
stu := model.NewStudent("Casey",18)
fmt.Println(*stu)
stu.SetName("321")
fmt.Println(stu.GetName())
stu.SetAge(20)
fmt.Println(stu.GetAge())
}
résultat de l'opération:
Lien vers la page d'accueil du blogueur: https://blog.csdn.net/weixin_44736475 L'
originalité n'est pas facile, j'espère que vous pourrez l'
appuyer.Si l'article vous est utile, pensez à cliquer sur trois liens! ❤️❤️❤️