17丨扩展与复用
扩展与复用
复合
与其他主要编程语言的差异
Go不支持继承,但可以通过复合的方式来复用
匿名类型嵌⼊
与其他主要编程语⾔的差异
它不是继承,如果我们把“内部 struct ”看作⽗类,把“外部 struct” 看作⼦类,
会发现如下问题:
1. 不⽀持⼦类替换
2. ⼦类并不是真正继承了⽗类的⽅法
• ⽗类的定义的⽅法⽆法访问⼦类的数据和⽅法
package ch11 import ( "fmt" "testing" ) type Pet struct { // Pet 类 } func (p *Pet) Speak() { // Pet 类的Speak方法 fmt.Print("...") } func (p *Pet) SpeakTo(host string) { // Pet 类的SpeakTo方法 p.Speak() // 调用 fmt.Println(" ", host) } type Dog struct { //再次定义一个Dog类 Pet // 父类 } func (d *Dog) Speak() { // Dog类的Speak 方法 fmt.Print("Wang~") // 不支持子类替换 } func TestDog(t *testing.T) { dog := new(Dog) dog.SpeakTo("Wen") //... Wen dog.Speak() //Wang~- }
这里的Speak() 方法并没有重载父类的方法
本文来自博客园,作者:元贞,转载请注明原文链接:https://www.cnblogs.com/yuleicoder/articles/14317984.html
浙公网安备 33010602011771号