Go 语言中的面向对象
我们总结一下前面章节的内容:Go
没有类
,而是松耦合
的类型、方法对接口的实现。
面向对象语言的三大要素:封装
,继承
和多态
,在 Go
中它们是怎样表现的呢?
封装:
和别的面向对象语言有 4
个或更多的访问层次
相比,Go
把它简化为了 2
层:
包范围内的(公共的):通过标识符首字母小写,对象 只在它所在的包内可见
可导出的(私有的):通过标识符首字母大写,对象 对所在包以外也可见
继承
在Go
语言中,继承
可以用组合实现:内嵌一个(或多个)包含想要的行为(字段和方法)的类型。多重继承可以通过内嵌多个类型实现
多态
在Go
语言中,多态
可以用接口实现:某个类型的实例可以赋给它所实现的任意接口类型的变量。类型和接口是松耦合
的,并且多重继承可以通过实现多个接口实现。Go
语言中的接口不是 Java
和 C#
接口的变体,而且接口间是不相关的,是大规模编程和可适应的演进型设计的关键。