結(jié)構(gòu)體嵌套結(jié)構(gòu)體賦值 golang的嵌入為什么不算繼承?
golang的嵌入為什么不算繼承?面向?qū)ο笤O(shè)計的思想是從現(xiàn)實世界中抽象出來的一套理論。既然是對現(xiàn)實世界的抽象,繼承的本質(zhì)就是父子關(guān)系。例如,動物是父母,貓是孩子。不能說具有父類的屬性或方法是繼承。go
golang的嵌入為什么不算繼承?
面向?qū)ο笤O(shè)計的思想是從現(xiàn)實世界中抽象出來的一套理論。既然是對現(xiàn)實世界的抽象,繼承的本質(zhì)就是父子關(guān)系。例如,動物是父母,貓是孩子。不能說具有父類的屬性或方法是繼承。
go放棄繼承的主要原因是繼承隨著面向?qū)ο蟮陌l(fā)展而被濫用了這么多年。然而,一些繼承的特性是非常需要的,所以提供了“嵌入”以便于“模擬”繼承,但其本質(zhì)是組合,而不是繼承。
讓我給你一個例子來證明在go中嵌入是一個組合,而不是一個繼承。
但是,根據(jù)面向?qū)ο罄碚摚宇惪梢栽诟割惪梢允褂玫娜魏蔚胤绞褂?。顯然,go嵌入不滿足這個要求。吐槽:什么是頭條最好的產(chǎn)品,當(dāng)你可以抱怨技術(shù)文章的時候,代碼編輯太不舒服了。