接口和繼承
現在有一個需要要求大學生和足球運動員掌握英語技能,請問怎么實現?
給運動員和學生結構體添加studyEnglish方法顯示是可以的,但是籃球動員和中學生也學習了英語,顯示不行。這時,我們可以直接給足球運動員和大學生添加方法,這樣子足球運動員和大學生都可以學習英語了。
type footballer struct {
}func (this *footballer) studyEnglish() {
}type daxuesheng struct {
}func (this *daxuesheng) studyEnglish() {
}
其實,仔細一想這樣有點不太規范。使用接口實現更好。
接口和繼承解決的問題不同
繼承的價值主要在于:解決代碼的復用性和可維護性。
接口的價值主要在于:設計,設計好各種規范(方法),讓其它自定義類型去實現這些方法。
接口比繼承更加靈活
接口比繼承更加靈活,繼承是滿足 is - a的關系, 而接口只需滿足 like - a 的關系
接口 在一定程度上實現代碼解耦