24 由鸭子测试看Go语言的接口实现

24 由鸭子测试看Go语言的接口实现

「If it looks like a duck, swims like a duck, and quacks like a duck, then it probably is a duck.」

中文:「如果一只鸟它走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。」

这便是「鸭子测试」,它是一种判定思想。这句话据记载来源于美国的一个诗人,叫詹姆斯·惠特科姆·莱利,他曾说过或写过这样一句话:

「When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.」


23 JavaScript到底是不是面向对象语言?

23 JavaScript到底是不是面向对象语言?

当然是。

为了讲清楚这个问题,我们需要先看一看「什么是面向对象编程」和「什么是面向对象语言」。

什么是面向对象编程?使用面向对象语言进行的编程就是面向对象编程。

什么是面向对象语言?在面向对象编程中使用的编程语言就是编程语言。

好吧,是不是感觉我说了两句废话,确实,编程语言可以自举,但是概念不可以。在讨论面向对象语言的时候,一般要界定这门语言的三个面向对象特征:封装、继承和多态。凡具有这三个特征,就是面向对象语言;不具有,就不是。

也有人讲过,面向对象特征有四个:封装、抽象、继承和多态,比一般的说法多了一个抽象。其实抽象不能算是面向对象的基本特征,因为在面向过程编程中,也有抽象;本质上编程就是抽象,就是将现实世界中一个或几个层面的东西剥离出来,用编程语言表达出来及进行交互控制。