读《Java编程思想》笔记——解读Alan Kay提到的面向对象程序的5个特性

 

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中的多态。比如下课铃响起的时候,老师会去往办公室,而学生会跑到走廊打打闹闹。

你可能感兴趣的:(Java编程思想)