美文网首页
Go语言类的继承缺陷案例

Go语言类的继承缺陷案例

作者: 鸿雁长飞光不度 | 来源:发表于2021-07-16 15:05 被阅读0次

虽然GO语言通过interface结合蕴含式定义属性能够实现类的继承效果,但是还是有不足之处的,比如下面同样的逻辑用PHP和go运行效果就不一样。

  • go
type BinLog interface {
    insert()
    update()
    Dispatch()
}

type Base struct {
}

func (b *Base) insert() {
    fmt.Println("base insert")
}

func (b *Base) update() {
    fmt.Println("base update")
}

func (b *Base) Dispatch() {
    b.insert()
    b.update()
}
type Sub struct {
    *Base
}
func (s *Sub) insert() {
    fmt.Println("sub insert")
}
func main() {
    var h = &Sub{
        &Base{},
    }
    h.Dispatch()
}
// 输出 ---
//base insert
//base update

//Process finished with exit code 0
  • php
class Base {

    public function Dispatch()
    {
        $this->insert();
        $this->update();
    }

    protected function insert()
    {
        echo __CLASS__ .__FUNCTION__ . PHP_EOL;
    }

    protected function update()
    {
        echo __CLASS__ .__FUNCTION__ . PHP_EOL;
    }

}
class Sub extends Base {

    protected function insert()
    {
        echo __CLASS__ .__FUNCTION__ . PHP_EOL;
    }
}
(new Sub())->Dispatch();

//-- 输出
//Subinsert
//Baseupdate

//Process finished with exit code 0

相关文章

  • Go语言类的继承缺陷案例

    虽然GO语言通过interface结合蕴含式定义属性能够实现类的继承效果,但是还是有不足之处的,比如下面同样的逻辑...

  • golang继承与接口

    继承 结构体 Go语言的结构体(struct)和其他语言的类(class)有同等的地位,但Go语言放弃了包括继 承...

  • go面向对象-初始化

    Go语言的结构体(struct)和其他语言的类(class)有同等的地位,但Go语言放弃了包括继承在内的大量面向对...

  • 11 接口(Interfaces)与反射(reflection)

    11.1 接口是什么 Go 语言不是一种“传统”的面向对象编程语言:它里面没有类和继承的概念。 但是 Go 语言里...

  • Go语言中没有类继承,要用多态怎么办?

    ​ Go语言中没有类继承,要用多态怎么办? 这一期我们继续来了解一下go语言。这些专门了解接口。大家知道,go语言...

  • Go结构体、方法、接口

    1 结构体 Go语言中没有“类”的概念,也不支持像继承这种面向对象的概念。但是Go语言的结构体与“类”都是复合结构...

  • 用Go语言实现ReactiveX(一)——Observable

    用Go语言实现ReactiveX有很大的挑战,Go语言本身没有类的继承,所以无法采用基类来做一些封装操作。不过好在...

  • Go语言 重写方法

    类似于Java中的继承,子类继承并重写父类的方法,Go语言也提供了这样的实现。Go语言中可以创建一个或者多个类型作...

  • Golang——结构体struct

    Go语言中没有“类”的改变,不支持类的“继承”等面向对象概念。Go语言中通过结构体的内嵌再配合接口比面向对象更具有...

  • Go语言一:Go语言究竟优秀在哪里

    Go语言继承了很多语言的精华,可以从2个维度来看。 语言的继承 语言的继承是说Go继承了不同语言的精华部分,而不是...

网友评论

      本文标题:Go语言类的继承缺陷案例

      本文链接:https://www.haomeiwen.com/subject/udlbpltx.html