go语言之进阶篇方法的重写


1、方法的重写

示例:

//Person类型,实现了一个方法
func (tmp *Person) PrintInfo() {
	fmt.Printf("name=%s, sex=%c, age=%d\n", tmp.name, tmp.sex, tmp.age)
}

//有个学生,继承Person字段,成员和方法都继承了
type Student struct {
	Person //匿名字段
	id     int
	addr   string
}

//Student也实现了一个方法,这个方法和Person方法同名,这种方法叫重写
func (tmp *Student) PrintInfo() {
	fmt.Println("Student: tmp = ", tmp)
}

func main() {
	s := Student{Person{"mike", 'm', 18}, 666, "bj"}
	//就近原则:先找本作用域的方法,找不到再用继承的方法
	s.PrintInfo() //到底调用的是Person, 还是Student, 结论是Student

	//显式调用继承的方法
	s.Person.PrintInfo()
}

执行结果:

Student: tmp =  &{{mike 109 18} 666 bj}

name=mike, sex=m, age=18

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM