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 }

 

posted @ 2021-03-18 01:01  从程序员到CTO  阅读(194)  评论(0)    收藏  举报
交流加我QQ:39667545