Golang初级系列教程-面向对象总结
如果你还没有阅读关于这一部分的文章,请先去读读看。这篇文章主要是对前面的一系列做一个总结性的介绍,特别是对于接触过面向对象概念的人而言,强烈建议首先去阅读以下几篇文章。
- Golang初级系列教程-Struct
- Golang初级系列教程-结构体匿名字段-Anonymous fields in structs
- Golang初级系列教程-结构体方法-Methods on structs
- Golang初级系列教程-继承和子类
- Golang初级系列教程-多重继承
- Golang初级系列教程-接口
- Golang初级系列教程-接口2
- Golang初级系列教程-接口多态性
面向对象三原则为:封装、继承和多态。但这些并不是面向对象独有的。Go
可以不用具体考虑面向对象的复杂特性就可以实现这些功能。必须再次强调:Go
不是面向对象语言。必须把这一点深深地记在心里,Go
的实现方式和面向对象是不同的。前面通过这样的方式来说明,只是为了容易理解和学习。
封装:控制方法和属性的可见性。Go
中关于这一点的突出特点有:
- 有两种可见性——包内可见性(私有)和
Public
- 如果一个字段、类型或者方法以大写字母开头,那么外部包也可见即
Public
, 相反以小写字母开头,那么只有当前包可见。 Public
举例:MyStruct
MyMethod
MyField
Private
举例:myStruct
myMethod
myField
- 可以为通过类型和函数绑定 实现定义类型的方法
func (my_type) my_func() int{}
- 如果类型并不在当前包中定义,不能声明其方法
继承:类型获得上层类型属性和方法的能力。Go
中关于这一点的突出特点有:
- 通过匿名字段实现继承——匿名字段从代码结构看,像是两个类型组合在一起
- 继承的类获取所有父类的属性和方法。对于不同包的继承,只有以大写字母开头的类型、字段和方法才会被继承,同一个包内,所有内容都会被继承
- 通过多个匿名字段可以实现多重继承
type Child struct { Father; Mother }
多态:当一种类型链接到不同实例时表现出不同的行为,这种类型就具有多态性。
Go
中的接口可以实现多态的概念。一个接口类型可以指向任何一个实现这个接口的类型。
Golang一种神奇的语言,让我们一起进步