Alan Kay对Smalltalk的总结:
- 1.万物皆为对象
- 2.程序是对象的集合,他们通过发送消息来告知彼此所要做的
- 3.每个对象都有自己的由其他对象所构成的存储
- 4.每个对象都拥有其类型
- 5.某一特定类型的所有对象都可以接收同样的消息
我想给以上观点调一下顺序:
- 1.万物皆为对象
- 2.每个对象都拥有其类型
- 3.每个对象都有自己的由其他对象所构成的存储
- 4.程序是对象的集合,他们通过发送消息来告知彼此所要做的
- 5.某一特定类型的所有对象都可以接收同样的消息
我觉的第1点、第2点更接近生物学的观点。就像我们说的自然界的万事万物,我们首先想到的肯定是人与动植物。而动植物在生物学上应该是有分类的,比如,边境牧羊犬与中华田园犬都是犬科。现实世界中应该是先有的对象,然后,人类为了更好的认识自然,才对自然界的物种进行分类。
第3点,更像是在讨论对象的组合。我们一般不会说狗由什么什么组成的,更常见的讨论是电脑由哪几部分组成,某个单位由哪些部门组成等等。这些对象都不是自然界中原有的,而是人类的发展所带来的。
至于第4点主要着重于对象之间的沟通,不管是平级沟通还是整体与部分的沟通。以人打开电灯为例,就是人发送消息给电灯,然后打开电灯的过程。
class Light(){
public void on(){
...
}
}
class Person(){
public void openLight(Light light){
light.on();
}
}
class Test(){
public static void main(String[] args){
Person xiaoming = new Person();//创建小明
Light light = new Light();//创建电灯
xiaoming.openLight(light);//小明打开电灯
}
}
至于第5点,很容易看出来就是Java中的多态。比如下课铃响起的时候,老师会去往办公室,而学生会跑到走廊打打闹闹。