不好!我中了美人計!
后記:這篇是上一篇《JavaScript的最大秘密》的續(xù)集,繼JavaScript的原型法之后,又介紹了一下Go語言面向對象的實現(xiàn)。Go語言在面向對象這一塊兒比較有趣,結構體和方法分開,沒有繼承,只有組合,有一種看起來很像DuckTyping的多態(tài),我想Ken Thompson和Rob Pike等人在設計Go語言的時候,肯定經過了深思熟慮,精心考量。
在Go語言的官網上,對Go語言是不是面向對象的語言做了答復:是也不是。雖然Go語言有類型和方法,并且允許面向對象風格的編程,但是并沒有類型的繼承,Go語言中“接口”的概念提供了一種不同的方式,我們認為在它更容易使用,更加通用。
Go語言通過在一個類型中嵌入另外一個類型來支持子類化(雖然并不完全等同)的概念。除此之外,Go語言中的方法比C++和Java更加通用,程序員可以在任何數(shù)據(jù)類型上定義方法,甚至是內置的類型:如Integer, 方法并不局限在structs(classes)上。 同樣,沒有類型繼承使得Go語言中的對象用起來比C++或者Java更加輕量級。
【本文為51CTO專欄作者“劉欣”的原創(chuàng)稿件,轉載請通過作者微信公眾號coderising獲取授權】