Golang的封装

Golang仍然具有面向对象的继承,封装和多态的特性,只是实现的方式和其它OOP语言不一样

在介绍面向对象语言的特性前,先介绍面向对象的编程思想——抽象

抽象

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

也就是找到共性,再用一个模板去刻画实例对象

封装

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

封装的理解和好处

①隐藏实现细节

②可以对数据进行验证,保证安全合理

封装的实现步骤

①将结构体、字段(属性)的首字母小写

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

③提供一个首字母大写的Set方法,用于对属性进行判断并赋值

④提供一个首字母大写的Get方法,用于获取属性的值

实践一个例子:创建一个person的struct,包含的属性有人名,年龄,薪资,要绑定的方法是年龄大于0,不大于65,薪资大于3000小于30000.要求使用封装

person.go的代码为:

main.go的代码为:

运行代码后,得到的是

上面是一个很简单的例子,但是可能不是很严谨

其实在写构造函数的时候,就可以判断输入的数据是否合理

比如说我们要创建新账号

这个就相当于构造函数,如果不对就会返回nil,也就是空指针