golang面向对象编程思想-抽象
就是把一类事物的共有属性(字段)和行为(方法)提取出来,形成一个物理模板。这种研究问题的方法称为抽象。
例子:
银行账号都有卡号,密码和余额属性,且可以存款,取款,查询余额这些行为,我们将这些属性和行为提取出来,形成一个模板,用代码实现如下:
项目结构图:
account.go
package model
import "fmt"
// 银行账号
type Account struct {
AccountNo string // 卡号
Pwd string // 密码
Balance float64 // 余额
}
// 存款
func (account *Account) Deposite(money float64, pwd string) {
// 检验密码
if account.Pwd != pwd {
fmt.Println("密码不正确")
return
}
// 检验存款金额
if money < 0 {
fmt.Println("输入的金额不正确")
return
}
account.Balance = account.Balance + money
fmt.Println("存款成功")
}
// 取款
func (account *Account) WithDraw(money float64, pwd string) {
// 检验密码
if account.Pwd != pwd {
fmt.Println("密码不正确")
return
}
// 检验取款金额
if money < 0 || money > account.Balance {
fmt.Println("输入的金额不正确")
return
}
account.Balance = account.Balance - money
fmt.Println("取款成功")
}
// 查询余额
func (account *Account) Query(pwd string) {
// 检验密码
if account.Pwd != pwd {
fmt.Println("密码不正确")
return
}
fmt.Printf("你的账号%v余额为%v\n", account.AccountNo, account.Balance)
}
main.go
package main
import (
"model"
)
func main() {
account := model.Account{
AccountNo: "pf11111111",
Pwd: "666666",
Balance: 1000,
}
// 查询余额
account.Query("666666")
// 存款
account.Deposite(1000, "666666")
// 查询余额
account.Query("666666")
// 取款
account.WithDraw(200, "666666")
// 查询余额
account.Query("666666")
// 查询余额
account.Query("888888")
}
输出结果:
你的账号pf11111111余额为1000
存款成功
你的账号pf11111111余额为2000
取款成功
你的账号pf11111111余额为1800
密码不正确