go语言开发基础27 - 之go语言里结构体的继承(多重继承)与组合

继承:Go语言中的某个结构体里的字段类型是另一个结构体类型时,这个结构体可以继承另一个结构体的属性。

多重继承:一个结构体里的字段包含多个结构体类型时就继承多个结构体的属性也叫多重继承。

组合:如果一个结构体嵌套了另一个有名的结构体,那么这个模式就叫组合,下面看具体示例。

 // 1.定义结构体名为Car
    type Car struct {
        weight int
        Name string
    }
    // 2.定义结构体名为Car1
    type Car1 struct {
        weight int
        name string
    }

    // 3.定义run方法(方法也可以继承)
    func (self Car) run() {
        fmt.Println(" runing")
    }

    // 4.定义结构体,名为bike,继承了两个结构体
    type Bike struct {
        Car          // 继承多个结构体叫多重继承
        c Car1
        lunzi int
    }
    type Train struct {
        c Car1       // 组合:如果一个结构体嵌套了另一个有名的结构体,那么这个模式就叫组合
        Car
    }

func main() {
    // 继承使用
    var a Bike
    a.c.weight = 100     // 多重继承时,需要使用结构体名.方法名调用方法
    a.c.name = "bike"
    a.Car.run()       // 继承了Car结构体的run方法,结果:runing
    a.lunzi = 2
    fmt.Println(a)    // 结果:{{0 } {100 bike} 2}

    var t Train
    t.c.weight = 180        // 组合需要使用结构体名(c)来实现访问
    t.Car.Name = "train"
    t.Car.run()       // 继承了Car的run方法,结果:runing

}

  

posted @ 2020-07-02 14:12  欧-阳  阅读(777)  评论(0)    收藏  举报