看一个问题,引出继承的必要性
一个小问题,看个学生考试系统的程序 extends01.go,提出代码复用的问题
Ø 走一下代码
package main
import (
“fmt”
)
//编写一个学生考试系统
//小学生
type Pupil struct { Name string Age int
Score int
}
//显示他的成绩
func (p *Pupil) ShowInfo() {
fmt.Printf(“学生名=%v 年龄=%v 成绩=%v\n”, p.Name, p.Age, p.Score)
}
func (p *Pupil) SetScore(score int) {
//业务判断 p.Score = score
}
func (p *Pupil) testing() { fmt.Println(“小学生正在考试中…..”)
}
//大学生, 研究生。。
//大学生
type Graduate struct { Name string
Age int Score int
}
//显示他的成绩
func (p *Graduate) ShowInfo() {
fmt.Printf(“学生名=%v 年龄=%v 成绩=%v\n”, p.Name, p.Age, p.Score)
}
func (p *Graduate) SetScore(score int) {
//业务判断 p.Score = score
}
func (p *Graduate) testing() { fmt.Println(“大学生正在考试中…..”)
}
//代码冗余.. 高中生….
func main() {
//测试
var pupil = &Pupil{ Name :”tom”, Age : 10,
}
pupil.testing() pupil.SetScore(90) pupil.ShowInfo()
//测试
var graduate = &Graduate{ Name :”mary”,
Age : 20,
}
graduate.testing() graduate.SetScore(90) graduate.ShowInfo()
}
Ø 对上面代码的小结
1) Pupil 和 Graduate 两个结构体的字段和方法几乎,但是我们却写了相同的代码, 代码复用性不强
2) 出现代码冗余,而且代码不利于维护,同时也不利于功能的扩展。
3) 解决方法-通过继承方式来解决