前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >23.Go面向对象-接口继承与转换

23.Go面向对象-接口继承与转换

作者头像
Devops海洋的渔夫
发布2021-08-25 15:08:11
1K0
发布2021-08-25 15:08:11
举报
文章被收录于专栏:Devops专栏Devops专栏

23.Go面向对象-接口继承与转换

7 接口继承与转换(了解)

接口也可以实现继承:

代码语言:javascript
复制
// 子集
type Humaner interface {
   sayhi()
}

// 超集
type Personer interface {
   Humaner // 匿名字段,继承sayhi()
   sing(lrc string)
}

// 学生类
type Student struct {
   name string
   id int
}

// Student实现sayhi
func (tmp *Student) sayhi()  {
   fmt.Printf("Student[%s, %d] sayhi\n", tmp.name, tmp.id)
}

func (tmp *Student) sing(lrc string)  {
   fmt.Printf("Student在唱着: %s\n", lrc)
}


func main() {
   // 定义接口类型的变量
   var i Personer
   s := &Student{"mike", 666}
   i = s
   i.sayhi() // 继承过来的方法
   i.sing("学生哥")
}

执行如下:

代码语言:javascript
复制
Student[mike, 666] sayhi
Student在唱着: 学生哥

接口继承后,可以实现“超集”接口转换“子集”接口,代码如下:

代码语言:javascript
复制
// 定义接口类型的变量
// 超级可以转换为子集,反过来不可以
var iPer Personer // 超集
iPer = &Student{"mike", 666}
var iHum Humaner // 子集
iHum = iPer // 超级转换为子集
iHum.sayhi() // 继承过来的方法
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海洋的渔夫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 23.Go面向对象-接口继承与转换
    • 7 接口继承与转换(了解)
      • 接口也可以实现继承:
      • 接口继承后,可以实现“超集”接口转换“子集”接口,代码如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档