您的位置:首页 > 编程语言 > Java开发

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

2019-02-27 12:11 183 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_28019485/article/details/87969450

 

Alan Kay对Smalltalk的总结:

  •  1.万物皆为对象
  • 2.程序是对象的集合,他们通过发送消息来告知彼此所要做的
  • 3.每个对象都有自己的由其他对象所构成的存储
  • 4.每个对象都拥有其类型
  • 5.某一特定类型的所有对象都可以接收同样的消息

我想给以上观点调一下顺序:

  • 1.万物皆为对象
  • 2.每个对象都拥有其类型
  • 3.每个对象都有自己的由其他对象所构成的存储
  • 4.程序是对象的集合,他们通过发送消息来告知彼此所要做的
  • 5.某一特定类型的所有对象都可以接收同样的消息

    我觉的第1点、第2点更接近生物学的观点。就像我们说的自然界的万事万物,我们首先想到的肯定是人与动植物。而动植物在生物学上应该是有分类的,比如,边境牧羊犬与中华田园犬都是犬科。现实世界中应该是先有的对象,然后,人类为了更好的认识自然,才对自然界的物种进行分类。

    第3点,更像是在讨论对象的组合。我们一般不会说狗由什么什么组成的,更常见的讨论是电脑由哪几部分组成,某个单位由哪些部门组成等等。这些对象都不是自然界中原有的,而是人类的发展所带来的。

   至于第4点主要着重于对象之间的沟通,不管是平级沟通还是整体与部分的沟通。以人打开电灯为例,就是人发送消息给电灯,然后打开电灯的过程。

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: