面向对象的核心元素:
对象:
对象是对一块内存空间的引用
方法表:
每个对象都有一个对应的方法表。
静态语言中一个类的所有实例对象共享一份相同的方法表,此方法表不能动态增加。
动态语言每个对象可以有自己独立的方法表,可以自行在方法表中增加和删除方法。
静态语言中的接口是一种方法表的契约。
面向对象的核心机制:
不论是静态语言还是动态语言,其主要的面向对象机制都是围绕为对象建立方法表而进行的。
静态语言中的Class以声明的方式为该Class的所有实例对象建立统一的方法表模版;静态语言中的Interface则是方法表的契约。
动态语言以执行代码的方式来动态为某个对象创建方法表,如JS中的Constructor函数。