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