400-700-1307

【GO+区块链面试题】go的组合继承

2019-01-29 14:26

下面代码会输出什么?

 

type People struct{}

func (p *People) ShowA() {

fmt.Println("showA")

p.ShowB()

}

func (p *People) ShowB() {

fmt.Println("showB")

}

type Teacher struct {

People

}

func (t *Teacher) ShowB() {

fmt.Println("teacher showB")

}

func main() {

t := Teacher{}

t.ShowA()

}

考点:go的组合继承

解答:

这是Golang的组合模式,可以实现OOP的继承。 被组合的类型People所包含的方法虽然升级成了外部类型Teacher这个组合类型的方法(一定要是匿名字段),但它们的方法(ShowA())调用时接受者并没有发生变化。 此时People类型并不知道自己会被什么类型组合,当然也就无法调用方法时去使用未知的组合者Teacher类型的功能。

 

showA

showB

开班信息

当前校区

北京校区
  • 北京校区
  • 上海校区
  • 广州校区
  • 沈阳校区
  • 杭州校区
  • 南京校区
  • 郑州校区
  • 成都校区
  • 深圳校区
  • 西安校区
  • 苏州校区
  • 深圳沙井
  • 深圳观澜
  • 深圳龙岗
  • 武汉校区
  • 西宁校区
  • 石家庄校区
  • 湖北咸宁
  • 广东惠州
  • 广东佛山

                    Copyright © 2007-2019 IT兄弟连教育 版权所有 京ICP备11018177号  京公网安备 11010802026987号