11.面向对象编程思想——抽象

1. 如何理解抽象

我们在前面去定义一个结构体时,实际上就是把一类事物的共有的属性(字段)和行为(方法)提取出来,形成一个物理模型(模板)。这种研究问题的方法称为抽象。

 

package main
import (
	"fmt"
)

// 定义一个结构体Account
type Account struct {
	AccountNo string
	Pwd string
	Balance float64
}

// 方法
// 1.  存款
func (account *Account) Deposite(money float64, pwd string) {
	// 验证密码是否正确
	if pwd != (*account).Pwd {
		fmt.Println("你输入的密码不正确")
		return
	}

	// 验证存款是否正确
	if money <= 0 {
		fmt.Println("你输入的金额不正确")
		return
	}
	// 验证存款金额是否正确
	account.Balance += money
	fmt.Println("存款成功")
}
// 2. 取款
func (account *Account) WithDraw(money float64, pwd string) {
	// 检查输入密码是否正确
	if pwd != account.Pwd {
		fmt.Println("你输入的密码不正确")
		return
	}
	// 查看取款金额是否正确
	if money <= 0 || money > account.Balance {
		fmt.Println("你输入的金额不正确")
		return
	}

	account.Balance -= money
	fmt.Println("取款成功~")
}

// 查询余额
func (account *Account) Query(pwd string) {
	// 检查输入密码是否正确
	if pwd != account.Pwd {
		fmt.Println("你输入的密码不正确")
		return
	}
	fmt.Printf("你的账号为=%v  余额=%v\n",account.AccountNo,account.Balance)
}

func main() {
	account := Account{
		AccountNo: "yinsiyu",
		Pwd: "666666",
		Balance: 100.0,
	}
	account.Query("666666")
	account.Deposite(100.0,"666666")
}

2.面向对象编程三大特性-封装

1)基本介绍

Golang仍然有面向对象编程的继承,封装和多态的特性,只是实现的方式和其它OOP语言不一样,下面我们一一为同学们进行详细的讲解Golang的三大特性是如何实现的。

2)封装介绍

封装(encapsulation)就是把抽象出的字段和对字段的操作封装在一起,数据被保护在内部,程序的其它包只有被通过被授权的操作(方法),才能对字段进行操作

3)封装的理解和好处

1. 隐藏实现细节

2. 可以对数据进行验证,保证安全合理(Age)

4)如何体现封装

1. 对结构体中的属性进行封装

2. 通过方法、包 实现封装

5)封装的实现步骤

1)将结构体、字段(属性)的首字母小写(不能导出了,其它包不能使用,类似private)

2)给结构体所在包提供一个工厂模式的函数,首字母大写,类似一个构造函数

3)提供一个首字母大写的Set方法(类似其它语言的public),用于对属性判断并赋值

    func (var 结构体类型名) SetXxx(参数列表)(返回值列表) {

        //  加入数据验证的业务逻辑

        var.字段 = 参数

}

4)提供一个首字母大写的Get方法(类似其它语言的public),用于获取属性的值

        func (var 结构体类型名) GetXxx() {

        return var. 字段

}

特别说明:在Golang开发中并没有特别强调封装,这点并不像Java,所以提醒学过Java的朋友,不用总是用Java的语法特性来看待Golang,Golang本身对面向对象的特性做了简化的

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值