Go语言之面向对象oop

2020-06-03  本文已影响0人  测试探索
Go语言的结构体嵌套:

1.模拟继承性,在下列结构中,B要访问A的属性,可以直接通过“.”来访问或者调用

type A struct {
    field
}
type B struct{
    A //匿名字段
}
package main

import "fmt"

func main(){
//面向对象:oop

//   1。创建父类的对象
    p1 := Person{name:"张三",age:30}
    fmt.Println(p1)
    fmt.Println(p1.name,p1.age)

//    2.创建子类的对象
    s1 := Student{Person{name:"李四",age:18},"中学"}
    fmt.Println(s1)

    s2 := Student{Person:Person{name:"王五",age:17},school:"北京大学"}
    fmt.Println(s2)

    var s3 Student
    s3.Person.name = "rose"
    s3.Person.age = 15
    s3.school = "清华大学"

//  提升字段,Person里的name和age,相当于Student就是提升字段,Student可以直接访问Person中的字段

    s3.name = "赵六"
    s3.age = 16
    fmt.Println("s3是: ",s3)

}

//定义父类
type Person struct {
    name string
    age int
}

type Student struct {
    Person //模拟继承结构
    school string //子类的新增属性
}

//结果
{张三 30}
张三 30
{{李四 18} 中学}
{{王五 17} 北京大学}
s3是:  {{赵六 16} 清华大学}

  1. 模拟聚合关系,在上一篇文章,D要访问C中的字段需要通过c来访问
type C struct{
    field
}

type D struct{
    c C //聚合关系
}
上一篇 下一篇

猜你喜欢

热点阅读