河南住房与城乡建设厅网站,网站开发的高级阶段包括,企业 办公 网站模板,sae wordpress主题小猴子继承了老猴子#xff0c;这样老猴子拥有的能力包括字段#xff0c;方法就会自动的被老猴子继承。
小猴子不需要做任何处理就可以拿到老猴子的字段和它的方法#xff0c;因为是继承关系。
但是小猴子还会其他的技能#xff0c;比如还会像小鸟一样飞翔#xff0c;希…
小猴子继承了老猴子这样老猴子拥有的能力包括字段方法就会自动的被老猴子继承。
小猴子不需要做任何处理就可以拿到老猴子的字段和它的方法因为是继承关系。
但是小猴子还会其他的技能比如还会像小鸟一样飞翔希望像鱼一样可以游泳。这样就可以通过实现的关系通过实现接口的方式来增强小猴子的能力。
当一个结构体继承了另外一个结构体那么这个结构体就拥有了继承结构体的字段和方法。如果这个结构体希望去扩展它的一些方法而不去破坏继承关系那么就可以通过实现的方式。
接口是对继承的一种补充。继承之后的新结构体实现了接口并不会去影响老的结构体。(其实也就是通过实现接口来扩展新的结构体的功能这样并没有影响老的结构体以及其继承关系)
在不去破坏继承关系的基础上对结构体功能进行扩展。其实就是解藕的方式去扩展结构体的功能。
package mainimport fmttype Monkey struct {Name string
}// 给monkey结构体绑定了一个方法叫做climbing
func (m *Monkey) climbing() {fmt.Println(m.Name, 生来会爬树)
}type Bird interface {Flying()
}type Fish interface {Swimming()
}type LittleMonkey struct {Monkey //继承关系
}func (l *LittleMonkey) Flying() {fmt.Println(l.Name, 会飞)
}func (l *LittleMonkey) Swimming() {fmt.Println(l.Name, 会游泳)
}func main() {lm : LittleMonkey{Monkey{Name: 悟空,},}lm.climbing()lm.Flying()lm.Swimming()
}悟空 生来会爬树
悟空 会飞
悟空 会游泳 对上面代码的小结 1当 A 结构体继承了B结构体那么A结构就自动的继承了B结构体的字段和方法并且可以直接使用 2当A结构体需要扩展功能同时不希望去破坏继承关系则可以去实现某个接口即可因此我们可以认为实现接口是对继承机制的补充