golang快速入门-15-golang的类的继承-用设计模式中的组合模式实现
golang的继承的实现机制,并没有使用extend关键字,而是使用了设计模式中推荐的组合模式。
从一系列的机制来看,golang的设计原则貌似是保持尽量少的关键字,于是我们程序员就不得不用struct+外部函数的方式实现类,不得不用组合模式显式的实现继承机制。
基类:
type Human struct { name string sex string } func (this *Human) Eat() { fmt.Println("Human.Eat()...") } func (this *Human) Walk() { fmt.Println("Human.Walk()...") }
派生类:
type SuperMan struct { Human //SuperMan类继承了Human类的方法 level int } //子类的新方法 func (this *SuperMan) Fly() { fmt.Println("SuperMan.Fly()...") } //重定义父类的方法Eat() func (this *SuperMan) Eat() { fmt.Println("SuperMan.Eat()...") } func (this *SuperMan) Print() { fmt.Println("name = ", this.name) fmt.Println("sex = ", this.sex) fmt.Println("level = ", this.level) }
Main类
1 func main() { 2 h := Human{"zhang3", "female"} 3 4 h.Eat() 5 h.Walk() 6 7 //定义一个子类对象 8 //s := SuperMan{Human{"li4", "female"}, 88} 9 var s SuperMan 10 s.name = "li4" 11 s.sex = "male" 12 s.level = 88 13 14 s.Walk() //父类的方法 15 s.Eat() //子类的方法 16 s.Fly() //子类的方法 17 18 s.Print() 19 }
浙公网安备 33010602011771号