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