本篇文章主要内容为Go语言类继承介绍及类继承示例。
目录
继承
定义父类
类嵌套
定义学生类
赋值及调用
继承
定义老师类
赋值及调用
同名字段
访问权限
总结
继承
Go 语言中没有继承的概念,所以结构、接口之间也没有父子关系。
Go 语言提倡的是组合利用组合达到代码复用的目的。
定义父类
首先定义一个人类,并设定名称、年龄、性别三个属性,绑定一个吃东西的类方法。
示例如下:
package mainimport "fmt"type Human struct {// 成员属性name stringage intgender string
}// 在类外绑定方法
func (this *Human) Eat() {fmt.Println("this is :", this.name, " eating")
}
类嵌套
类的嵌套而非类的继承。
定义学生类
定义一个学生类,包含Human类型的变量,此时是类的嵌套。
示例如下:
type Student1 struct {hum Human // 包含Human类型的变量,此时是类的嵌套score float64school string
}
赋值及调用
对学生类赋值及打印学生类的属性。
示例如下:
func main() {s1 := Student1{hum: Human{name: "hong",age: 12,gender: "女生",},school: "清华附小",}fmt.Println("s1.name:", s1.hum.name)fmt.Println("s1.school:", s1.school)
}
运行结果:
s1.name: hong
s1.school: 清华附小
继承
定义老师类
定义一个老师,去继承Human类。
示例如下:
type Teacher struct {Human // 直接写human类型,没有字段名字subject string //学科
}
赋值及调用
定义一个老师,并赋值老师的属性。
示例如下:
func main() {t1 := Teacher{}t1.subject = "英语"// 下面的这些字段都是继承自Humant1.name = "朱老师"t1.age = 40t1.gender = "女"fmt.Println("t1:", t1)// 调用继承的方法t1.Eat()
}
同名字段
继承的时候,虽然我们没有定义字段名字,但是自动会创建一个默认同名字段
这是为了在子类中依然可以操作父类,因为:子类父类可能出现同名字段。
示例如下:
fmt.Println("t1.Human.name:", t1.Human.name)
访问权限
在go语言中,权限都是通过首字母大小写来控制
1.import --> 如果包名不同,那么只有大写字母开头的才是public的
2.对于类里面的成员、方法 --> 只有大写开头的才能在其他包中使用
总结
本篇文章主要内容为Go语言类继承介绍及类继承示例。