前言
一名大龄程序员,浑浑噩噩好多年。虽然一直在程序员行列摸爬滚打,始终没有找到一个适合自己的一个方向。有时候,想太多,越想越想不明白,索性不想了,不如静下心来踏踏实实的学好技术。
之前一直看很多负面新闻,35岁程序员危机之类的,让我惶惶不可终日,其炒作的高峰点便是华为要裁掉35岁以上的老员工,直到在知乎看到一篇文章,写的是一名程序员为前京东同事内退到华为,他的同事问华为是不是会裁掉35岁以上的老员工。他的回答让我醍醐灌顶,他说一个企业或公司不会随便开除一个对公司有用的人,只会裁掉那些在公司浑水摸鱼混日子的人。
预期每日浪费时间担心未来,不如脚踏实地做好现在。
把N年前借同学的一本《Java编程思想(第四版)》又翻了出来,真的是感慨万千,多么好的一本书,竟然一直跟着我吃灰到现在。于是决心从头仔仔细细把这本书翻看学习一遍。以下是我在看书的过程中的学习笔记,在此做个记录。
第一章:对象导论
- 面向对象程序设计 OOP (Object Oriented Programming)
- 人们所能够解决问题的复杂性直接取决于抽象的类型和质量。
- 对象具有状态、行为、标识。
- smalltalk:面向对象程序设计之母,第二个面向对象程序设计语言,第一个是Simula-67.
- Smalltalk的五个基本特征:
- 万物皆对象。
- 程序是对象的集合,他们通过发送消息来告知彼此所要做的事。
- 每个对象都有自己的由其他对象所构成的存储。
- 每个对象都拥有类型。
- 某一特定类型的所有对象都可以接收同样的消息。
- 每个对象都是服务的提供者。高内聚低耦合。
- 访问控制:
- private:只能类型创建者和类的内部方法能够访问。
- protected:除了其类内部方法能够访问外,继承该类的子类也可以访问。
- public:任何人均可访问。
- 无限定词:同一包内的类和其自身类的方法均可访问。(包访问权限)
- 组合(聚合):has a 某一个类是另一个类的一部分。
- 继承:is a 某一个类是另一个类的特例。(基类/导出类、超类/继承类、父类/子类)
- 重载、动态绑定是多态的基础。
- 将导出类看做其基类的过程,称为向上转型。(upcasting)
- java是一种单根继承的面向对象程序设计语言。(所有的类的根类是Object)
- 泛型,实现容器内的对象,取出时可以获取准确的类型,否则只能拿到一个Object。
- java采用了动态分配内存的方式,并通过垃圾回收器实现垃圾自动回收,无需开发人员解决。
- Java引入了异常处理。
- Java实现了并发编程。(自动识别并使用单处理或多处理器)
- 客户端编程:
- 插件
- 脚本语言(JavaScript等)
- Java Applet
- Flex(Flash Player)
18 服务端编程:java、python等,python是一个优秀的语言,可以重点关注(2005年啊,多有远见)。
总结
这一章都是一些基础知识,但是确实Java面向对象程序设计语言的根基和设计原则,是非常重要的。最早之前学习这些基础知识的时候,一半都是死记硬背,书上说什么就是什么。但是,今天再回头来看这些内容的时候,才发现其设计的精妙之处,以及后面更高级设计和应用的原则和地基。