接口和继承
现在有一个需要要求大学生和足球运动员掌握英语技能,请问怎么实现?
给运动员和学生结构体添加studyEnglish方法显示是可以的,但是篮球动员和中学生也学习了英语,显示不行。这时,我们可以直接给足球运动员和大学生添加方法,这样子足球运动员和大学生都可以学习英语了。
type footballer struct {
}
func (this *footballer) studyEnglish() {
}
type daxuesheng struct {
}
func (this *daxuesheng) studyEnglish() {
}
其实,仔细一想这样有点不太规范。使用接口实现更好。
接口和继承解决的问题不同
继承的价值主要在于:解决代码的复用性和可维护性。
接口的价值主要在于:设计,设计好各种规范(方法),让其它自定义类型去实现这些方法。
接口比继承更加灵活
接口比继承更加灵活,继承是满足 is - a的关系, 而接口只需满足 like - a 的关系
接口 在一定程度上实现代码解耦