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