读《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中的多态。比如下课铃响起的时候,老师会去往办公室,而学生会跑到走廊打打闹闹。
相关文章推荐
- 《Java编程思想》学习笔记2——对象初始化和面向对象特性
- Java笔记(Java编程思想第二版)
- Java编程思想重点笔记(Java开发必看)
- PHP学习笔记---封装(面向对象三大特性之一)
- 《JAVA编程思想》学习笔记---第十五章:泛型
- 【C++学习笔记】特殊用途语言特性
- 【学习笔记】Maven依赖特性
- C++ 学习笔记:C++11 新特性学习
- C++11新特性学习笔记(一)
- 深入解读ADO.NET2.0的十大最新特性
- C++11新特性学习笔记
- 黑马程序员————IOS学习笔记 第3篇 OC面向对象三大特性(1)
- 【Python学习笔记】python高级特性:迭代
- STL学习笔记----C++的新语言特性
- Smarty学习笔记三:Smarty3新特性
- 《Java编程思想》(笔记10)-- 内部类
- 你能描述一下渐进增强和优雅降级之间的不同吗?如果提到了特性检测,可以加分。
- CSS学习笔记——盒模型,块级元素和行内元素的区别和特性
- java编程思想第四版学习笔记-内部类
- 《Java编程思想》笔记