Go语言中 继承和多态的对比 以及最佳实践 (Golang经典编程案例)


Golang中接口和继承的区别

  1. 继承的主要价值在于:解决代码的复用性和可维护性;接口的主要价值在于:设计好的规范(方法),让其他自定义类型去实现这些方法。
  2. 接口比继承更加灵活,继承是 is-a 的关系,而接口是 like-a 的关系。
  3. 接口在一定程度上实现了代码的解耦。

最佳实践

package main

import (
    "fmt"
)

//Monkey结构体
type Monkey struct {
    Name string
}

//声明接口
type BirdAble interface {
    Flying()
}

type FishAble interface {
    Swimming()
}

func (this *Monkey) climbing() {
    fmt.Println(this.Name, " 生来会爬树..")
}

//LittleMonkey结构体
type LittleMonkey struct {
    Monkey //继承
}


//让LittleMonkey实现BirdAble
func (this *LittleMonkey) Flying() {
    fmt.Println(this.Name, " 通过学习,会飞翔...")
}
//让LittleMonkey实现FishAble
func (this *LittleMonkey) Swimming() {
    fmt.Println(this.Name, " 通过学习,会游泳..")
}

func main() {

    //创建一个LittleMonkey 实例
    monkey := LittleMonkey{
        Monkey {
            Name : "悟空",
        },
    }
    monkey.climbing()
    monkey.Flying()
    monkey.Swimming()
}

执行结果如下图所示:

Go语言中 继承和多态的对比 以及最佳实践 (Golang经典编程案例)介绍到这里,更多Go学习请参考编程字典Go教程 和问答部分,谢谢大家对编程字典的支持。


原文链接:https://blog.csdn.net/cui_yonghua/article/details/94410677?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163480011616780274138504%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163480011616780274138504&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-10-94410677.pc_v2_rank_blog_default&utm_term=go&spm=1018.2226.3001.4450