【愚公系列】2022年08月 Go教学课程 032-结构体方法继承
【摘要】 一、结构体方法继承 1.继承的概念继承是指一个子类(或称为派生类)继承父类(或称为基类)的特征(属性和操作)。继承是面向对象程序设计时实现代码复用的重要手段,它允许在原有的类的基础上进行扩展,增加功能,这样新产生的类称为子类。 2.go中的继承但在Go 语言本身并不支持继承。但可以使用组合的方法,实现类似继承的效果。Go 语言中,把一个结构体嵌入到另一个结构体的方法,称之为组合。 3.方法...
一、结构体方法继承
1.继承的概念
继承是指一个子类(或称为派生类)继承父类(或称为基类)的特征(属性和操作)。继承是面向对象程序设计时实现代码复用的重要手段,它允许在原有的类的基础上进行扩展,增加功能,这样新产生的类称为子类。
2.go中的继承
但在Go 语言本身并不支持继承。但可以使用组合的方法,实现类似继承的效果。Go 语言中,把一个结构体嵌入到另一个结构体的方法,称之为组合。
3.方法继承
package main
import "fmt"
type Student struct {
Person
score float64
}
type Person struct {
id int
name string
age int
}
func (p *Person) PrintInfo() {
fmt.Println(*p)
}
func main() {
stu := Student{Person{101, "张三", 18}, 90}
stu.PrintInfo()
}
4.方法继承案例
package main
import "fmt"
//记者:我叫张三 ,我的爱好是偷拍,我的年龄是34,我是一个男狗仔。
//程序员:我叫孙全,我的年龄是23,我是男生,我的工作年限是 3年。
// 1: 定义父类
type Person struct {
name string
age int
sex string
}
// 2: 给父类添加方法。
func (p *Person) SetValue(userName string, userAge int, userSex string) {
p.sex = userSex
p.age = userAge
p.name = userName
}
// 3: 定义相应的子类。
// 记者类
type Rep struct {
Person
Hobby string // 爱好
}
func (r *Rep) RepSayHello(h string) {
r.Hobby = h
fmt.Printf("我叫%s ,我的爱好是%s,我的年龄是%d,我是一个%s记者\n", r.name, r.Hobby, r.age, r.sex)
}
// 程序员类
type Pro struct {
Person
WorkYear int
}
func (p *Pro) ProSayHello(workYear int) {
p.WorkYear = workYear
fmt.Printf("我叫%s,我的年龄是%d,我是%s,我的工作年限是 %d年\n", p.name, p.age, p.sex, p.WorkYear)
}
// 4: 给子类添加相应的方法
// 5: 展示效果
func main() {
var rep Rep
rep.SetValue("小黄", 35, "男")
rep.RepSayHello("跟拍")
var pro Pro
pro.SetValue("小菊", 28, "男")
pro.ProSayHello(3)
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)