Go 语言中的OOP
/*
面向对象OOP
Go语言的结构体嵌套:
1.模拟继承性: is a
type A struct{
field
}
type B struct{
A //匿名字段
}
2.模拟聚合关系 has a
type C struct{
field
}
type D struct{
c C //聚合关系
}
*/
package main
import (
"fmt"
)
//OOP
//
//模拟继承 : is a
/*
Person中的name和age字段为Student中的提升字段,
即可以直接 s1.name = "张三",不用再s1.Person.name
*/
func main() {
//1.创建父类的对象
p1 := Person{
name: "小明",
age: 21,
}
fmt.Println(p1)
fmt.Println(p1.name,p1.age)
//2.创建子类的对象
s1 := Student{
Person:Person{
name: "李四",
age: 22,
},
school: "北京大学",
}
fmt.Println(s1)
fmt.Printf("姓名:%s, 年龄:%d, 学校:%s\n",s1.name,s1.age,s1.school)
}
//1.定义父类
type Person struct {
name string
age int
}
//2.定义子类
type Student struct {
Person //模拟继承结构
school string //子类新增属性
}
结果:
{小明 21}
小明 21
{{李四 22} 北京大学}
姓名:李四, 年龄:22, 学校:北京大学