首页 继承律师文集文章正文

抽象类能继承吗(抽象类可以继承吗)

继承律师文集 2025年02月26日 05:09 24 kk

大家好,今天小编关注到一个比较有意思的话题,就是关于抽象类能继承吗的问题,于是小编就整理了1个相关介绍抽象类能继承吗的解答,让我们一起看看吧。

  1. golang的嵌入为什么不算继承?

golang的嵌入为什么不算继承?

面向对象的设计思想,是根据现实世界进行抽象得出的一套理论。既然是现实世界的抽象,继承的本质是有“父子”关系。比如,动物是父类,猫是子类。不能说有父类的属性和方法就是继承。

Go 语言之所以摈弃继承,主要考虑到,面向对象这么多年的发展,继承被滥用了。但一些继承的特性有很需要,所以,提供了“嵌入”这种东西,方便“模拟”继承,但它的本质是组合,不是继承。

抽象类能继承吗(抽象类可以继承吗)

我举一个例子,证明 Go 中的嵌入是组合不是继承。

package main
import (
"fmt"
)
type Animal struct {
Name string
Age int
}
type Cat struct {
*Animal
Type string
}
func TestInherit(a *Animal) {
fmt.Println(a.Name)
}
func main() {
cat := &Cat{
Animal: &Animal{Name: "xiaohua", Age: 12},
Type: "波斯猫",
}
TestInherit(cat)
}

以上代码会编译错误:

cannot use cat (type *Cat) as type *Animal in argument to TestInherit

但按照面向对象的理论:所有能用父类的地方,都可以使用子类。很明显,Go 的嵌入不符合这个要求。

吐槽一下:头条的产品,啥时候能对技术文章有好一点,代码编辑太难受了~~

到此,以上就是小编对于抽象类能继承吗的问题就介绍到这了,希望介绍关于抽象类能继承吗的1点解答对大家有用。

标签: 抽象继承法

发表评论

继承律师网 广州继承律师版权所有