Go面向对象编程三大特性 封装
介绍:封装就是把抽象出的字段和对字段的操作封装在一起,数据被保护在内部,程序的其他包只有通过被授权的操作(方法),才能对字段进行操作。
理解与好处
隐藏实现细节
可以对数据进行验证,保证安全合理
如何体现封装
对结构体中的属性进行封装
通过方法、包,实现封装
封装的实现步骤
将结构体、字段(属性)的首字母小写(不能导出了,其他包不能使用)
给结构体所在包提供一个工厂模式的函数,首字母大写
提供一个首字母大写的Set方法,用于对属性判断并赋值
提供一个首字母大写的Get方法,用于获取属性的值
继承
继承可以解决代码复用,让我们的编程更加靠近人的思维
当多个结构体存在相同的属性(字段)和方法时,可以从这些结构体中抽象出结构体,在该结构体中定义这些相同的属性和方法
其他结构体不需要重新定义这些属性(字段)和方法,只需嵌套一个匿名结构体即可(也就是说:在golang中,如果一个struct嵌套了另一个匿名结构体,那么这个结构体可以直接访问匿名结构体的字段和方法,从而实现了继承特性)
Eg:type Goods struct{ Name string Price int } Type Book struct{ Goods Writer string }
便利:(1)代码的复用性提高了;(2)代码的扩展性和维护性提高了
结构体可以使用嵌套匿名函数结构体所有的字段和方法,即首字母大写或者小写的字段、方法都可以使用
匿名结构体字段访问可以简化(当结构体和匿名函数有相同字段或者方法时,编译器采用就近原则访问,如希望访问匿名结构体的字段和方法,可以通过匿名结构体名来区别)
结构体嵌入两个(或多个)匿名结构体,如两个匿名结构体有相同的字段和方法(同时结构体本身没有同名的字段和方法),在访问时,就必须明确指定匿名结构体名字,否则编译错误
如果结构体中有一个基本类型,就不能有第二个,除非命名
多态
变量(实例)具有多种形态。面向对象的第三大特征,在go语言中,多态是通过接口实现的。可以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。
#接口体现多态特征:多态参数、多态数组
心得体会:封装的实现十分便利,操作很简单,继承理解上很像Python中父类子类,多态的实现主要靠接口,接口的多种多样体现了go面对对象的一大特性。正因为这些机制的存在,使得程序更加简单和复杂丰富。