Go 语言中的面向对象

我们总结一下前面章节的内容:Go 没有,而是松耦合的类型、方法对接口的实现。

面向对象语言的三大要素:封装继承多态,在 Go 中它们是怎样表现的呢?

封装:

和别的面向对象语言有 4 个或更多的访问层次相比,Go 把它简化为了 2 层:

  • 包范围内的(公共的):通过标识符首字母小写,对象 只在它所在的包内可见

  • 可导出的(私有的):通过标识符首字母大写,对象 对所在包以外也可见

继承

Go语言中,继承可以用组合实现:内嵌一个(或多个)包含想要的行为(字段和方法)的类型。多重继承可以通过内嵌多个类型实现

多态

Go语言中,多态可以用接口实现:某个类型的实例可以赋给它所实现的任意接口类型的变量。类型和接口是松耦合的,并且多重继承可以通过实现多个接口实现。Go 语言中的接口不是 JavaC# 接口的变体,而且接口间是不相关的,是大规模编程和可适应的演进型设计的关键。