golang面向对象编程思想
抽象介绍:
在定义一个结构体的时候,实际上就是把一类事物的共有属性(字段)和行为(方法) 提取出来,形成一个物理模型(模板),这种研究问题的方法称为抽象。
封装:
把抽象出的字段和对字段的操作封装在一起,数据被保护在内部,程序的其它包只有通过被授权的操作(方法),才能对字段进行操作。
1)将结构体、字段(属性)的首字母小写
2)给结构体所在包提供一个工厂模式的函数,首字母大写,类似一个构造函数
3)提供一个首字母大写的Set方法(类似其它语言的public),用于对属性判断并赋值
model.go
package model
import (
"fmt"
)
type account struct {
username string
password string
balance float64
}
func NewAccount() *account {
return &account{}
}
// 设置账号
func (user *account) SetUsername(username string) {
if len(username) < 6 && len(username) > 10 {
fmt.Println("账号长度必须是6到10位")
return
}
user.username = username
}
func (user *account) GetUsername() string {
return user.username
}
// 设置密码
func (user *account) SetPassword(password string) {
if len(password) != 6 {
fmt.Println("密码必须是6位")
return
}
user.password = password
}
func (user *account) GetPassword() string {
return user.password
}
// 设置余额
func (user *account) SetBalance(balance float64) {
if balance < 20 {
fmt.Println("余额必须大于20")
return
}
user.balance = balance
}
func (user *account) GetBalance() float64 {
return user.balance
}main.go
package main
import (
"fmt"
"model"
)
func main() {
user := model.NewAccount()
user.SetUsername("admin123")
user.SetPassword("123456")
user.SetBalance(20)
fmt.Println(user.GetUsername(), user.GetPassword(), user.GetBalance())
}继承:
相关推荐
Lzs 2020-10-23
Justhavefun 2020-10-22
周游列国之仕子 2020-09-15
风雨断肠人 2020-09-04
聚合室 2020-11-16
零 2020-09-18
ChaITSimpleLove 2020-10-06
afanti 2020-09-16
88234852 2020-09-15
YClimb 2020-09-15
卖口粥湛蓝的天空 2020-09-15
stulen 2020-09-15
pythonxuexi 2020-09-06
abfdada 2020-08-26
梦的天空 2020-08-25