项目中已经经常使用golang继承,现在总结一下,主要摘在Golang中的面向对象继承
总结如下:
- golang使用组合,可以将两个结构体简单组合形成一个新的数据类型
- 可以通过匿名嵌入方式实现继承,从而共享代码和数据
匿名嵌入有三种方式
- 接口类型
- 结构体实例
- 结构体实例指针
接口类型更加灵活,只要实现这个接口的方法都可以进行赋值。
继承自其它结构体的struct类型可以直接访问父类结构体字段/方法
嵌入继承机制的局限
Golang从根本上阻止了抽象方法的使用。
多态性
golang不支持多态,即不能用子类替换父类。
但是golang支持接口类型的多态机制,只要结构体实现了接口的方法就可以进行赋值。