总结:简单的介绍了Java的概念,就是一个对于Java学习的导入,说的东西都比较浅薄,在后面的文章才会继续深入学习每一个点。
1.1 抽象过程
所有编程语言都提供了抽象机制。
抽象①:解决问题时基于计算机结构(如汇编语言);
抽象②:解决问题时只针对问题建模(但是这还不是面向对象,如早期的某些编程语言,它们有的把所有问题都转化为列表,把所有问题都转化成算法形式,但是都是解决特定的问题);
面向对象:解决问题时基于所要解决的问题的结构,根据问题来描述问题,而不是像抽象①和抽象②。
基本特性:
·万物皆为对象;
·程序是对象的姬和,它们通过发送消息来告知彼此所要做的;
·每个对象都有自己的由其他对象所构成的存储(就是包含);
·每个对象都拥有其类型;
·某一特定类型的所有对象都可以接收同样的信息(就像圆形也是几何形,那么圆形也能接受发给几何形的信息)。
1.2 每个对象都有一个接口
方法就是接口。
面向对象总如何根据问题来描述问题,就是定义类。
1.3 每个对象都提供服务
每个对象都只好好完成一项任务,不去做更多的事。就是不要把所有事情都堆在一个对象里,将事情合理分解,也易于修改。
1.4 被隐藏的具体实现
把程序开发人员分为类创建者和客户端程序员。
类创建者:构建类;
客户端程序员:收集类用来进行应用开发。
这就像是我们刚开始学习时接触到的一个例子,时钟。类创建者将时钟抽象成一个类,如小时、分钟、秒构成一个属性类,设置闹钟、调时钟的方法构成一个类;这是客户端程序员就能用这些类去做一个小闹钟应用了,并可以在原本的类的基础上进行添加功能,如秒表。
但是呢,客户端程序员不需要接触到属性类,只需要运用方法类,同时类创建者也不希望客户端程序员能接触到它们不需要接触到的类,以免产生严重的bug。那么这时候就需要访问控制了。
访问控制:public > 默认 > protected > private
存在原因:
·让客户端程序员无法触及他们不应该触及的部分;
·允许库设计者可以改变类内部的工作方式而不会担心会影响到客户端程序员。(有时候你会发现你的类能更加精简,那么你会去修改它让它可以运行的更快)
1.5 复用的具体实现 1.6 继承
代码复用是OOP所提供的最了不起的优点之一。
最简单的复用就是组合(has-a)了,即将一个类的对象置于另一个新的类中。(汽车拥有引擎)
另一种就是继承(is-a),即使得子类具有父类的属性和方法(即便是private)或者重新定义、追加属性和方法。(几何形导出圆形、矩形等)
使父类和子类产生差异:
·直接在子类中添加新方法;
·改变现有基类的方法的行为。
再另外提出一个概念:耦合,即模块间的依赖性。
https://www.cnblogs.com/z-x-y/p/9230856.html
组合是松耦合,继承是紧耦合。
·松耦合,独立性就高,非常适用于如今的合作开发过程,每个人各自负责自己的模块,一个模块变动也不影响另一个模块;
·松耦合的方法,一般是底层函数,功能尽量单一,尽量避免修改底层函数,功能相近的函数,可以设计两个以上,不要为了减少代码量,把一个函数的功能设计太多。
·紧耦合,独立性就低,但是简单便利,无法支持大规模的计算。
1.7 伴随多态的可互换对象
也就是利用向上转型实现的多态。
1.8 单根继承结构
Java有一个终极基类Object。
优点:
·所有对象都有一个共用接口;
·所有对象都具备某些功能;(如一些基本操作)
·便于实现垃圾回收器。
1.9 容器
容器又称集合。
用处是在任何需要的时候都可以扩充自己以容纳你置于其中的所有东西。
对容器有所选择的原因:
·不同容器提供了不同类型的接口和行为;(不同容器可能对同一个问题会有不同的解决方案)
·不同的容器对于某些操作具有不同的效率。(数据结构中学的顺序表适合存取,链表适合删除添加)
向下转型: