結構體嵌套結構體賦值 golang的嵌入為什么不算繼承?
golang的嵌入為什么不算繼承?面向對象設計的思想是從現(xiàn)實世界中抽象出來的一套理論。既然是對現(xiàn)實世界的抽象,繼承的本質就是父子關系。例如,動物是父母,貓是孩子。不能說具有父類的屬性或方法是繼承。go
golang的嵌入為什么不算繼承?
面向對象設計的思想是從現(xiàn)實世界中抽象出來的一套理論。既然是對現(xiàn)實世界的抽象,繼承的本質就是父子關系。例如,動物是父母,貓是孩子。不能說具有父類的屬性或方法是繼承。
go放棄繼承的主要原因是繼承隨著面向對象的發(fā)展而被濫用了這么多年。然而,一些繼承的特性是非常需要的,所以提供了“嵌入”以便于“模擬”繼承,但其本質是組合,而不是繼承。
讓我給你一個例子來證明在go中嵌入是一個組合,而不是一個繼承。
但是,根據面向對象理論,子類可以在父類可以使用的任何地方使用。顯然,go嵌入不滿足這個要求。吐槽:什么是頭條最好的產品,當你可以抱怨技術文章的時候,代碼編輯太不舒服了。