Golang的封装
Golang仍然具有面向对象的继承,封装和多态的特性,只是实现的方式和其它OOP语言不一样
在介绍面向对象语言的特性前,先介绍面向对象的编程思想——抽象
抽象
我们在前面对定义一个结构体时候,实际上就是把一类事物的共有的属性(字段)和行为(方法)提取出来,形成一个物理模型(模板)。这种研究问题的方法称为抽象。
也就是找到共性,再用一个模板去刻画实例对象
封装
封装(encapsulation)就是把抽象出的字段和对字段的操作封装在一起,数据被保护在内部,程序的其它包只有通过被授权的操作(方法),才能对字段进行操作。
封装的理解和好处
①隐藏实现细节
②可以对数据进行验证,保证安全合理
封装的实现步骤
①将结构体、字段(属性)的首字母小写
②给结构体所在包提供一个工厂模式的函数,首字母大写,类似一个构造函数
③提供一个首字母大写的Set方法,用于对属性进行判断并赋值
④提供一个首字母大写的Get方法,用于获取属性的值
实践一个例子:创建一个person的struct,包含的属性有人名,年龄,薪资,要绑定的方法是年龄大于0,不大于65,薪资大于3000小于30000.要求使用封装
person.go的代码为:
main.go的代码为:
运行代码后,得到的是
上面是一个很简单的例子,但是可能不是很严谨
其实在写构造函数的时候,就可以判断输入的数据是否合理
比如说我们要创建新账号
这个就相当于构造函数,如果不对就会返回nil,也就是空指针