go语言使用嵌套体实现继承

69 阅读1分钟

go语言中不像java中使用extend关键字直接继承类实现继承

在 go语言,可以通过嵌套实现继承

package main

import "fmt"

/**
嵌套体实现继承
*/
func main() {
	var d1 = dog{2, animal{name: "旺财"}}
	d1.move() // 相当于 d1.animal.move()
	d1.wangwang()
	fmt.Println(d1)

}

type animal struct {
	name string
}

func (a *animal) move() {
	fmt.Println("动物名: %s  ", a.name)
}

type dog struct {
	age int8
	animal
}

//指定某个对象才能调用方法
func (d *dog) wangwang() {
	fmt.Println("%d 岁的狗会汪汪汪", d.age)
}

这里相当于对象里嵌套对象

在这里插入图片描述

可以看到dog对象调用基类animal的方法move
这里的d1.move() 相当于 d1.animal.move(),实际还是使用嵌套对象的引用调用自己的方法