首页 > 其他 > 详细

golang面向对象编程思想-抽象

时间:2021-06-01 00:40:40      阅读:17      评论:0      收藏:0      [点我收藏+]

就是把一类事物的共有属性(字段)和行为(方法)提取出来,形成一个物理模板。这种研究问题的方法称为抽象。

例子:
银行账号都有卡号,密码和余额属性,且可以存款,取款,查询余额这些行为,我们将这些属性和行为提取出来,形成一个模板,用代码实现如下:
项目结构图:
技术分享图片

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
密码不正确

golang面向对象编程思想-抽象

原文:https://www.cnblogs.com/adong2021/p/14833595.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!