Java基础篇(一)---面向对象
面向对象和面向过程
1、面向对象
1.1 面向对象思想的核心之一,就是模拟真实世界,把真实世界中的事物抽象成类,整个程序靠各个类的实例互相通信、互相协作完成系统功能,这非常符合真实世界的运行状况,也是面向对象思想的精髓。
1.2 面向对象是一种程序设计思想,计算机程序的设计实质上就是将现实中的一些事物的特征抽离出来描述成一些计算机事件的过程,这种抽象的过程中,我们把具体的事物封装成一个一个的整体进行描述,使被描述的对象具备一些系统性、整体性的的行为和特征,我们把这种设计思想称为面向对象。
2、面向对象与面向过程
2.1 面向过程是早期的程序语言设计思想,该思想强调事物的行为细节,即程序的设计不需要封装成一个个的整体,而是将整个程序描述成一个行为,所有行为细节都按照固定方式一步一步的执行,执行程序就是执行某一行为的过程。
2.2 面向对象和面向过程都是一种思想,面向对象是相对于面向过程而言的,面向过程强调的是具体的功能行为,而面向对象将功能封装进对象,强调具备了功能的对象,面向对象是基于面向过程的,但面向对象思想更接近于现实场景。
3、例子:如何大象装进冰箱?
面向过程:
为了把大象装进冰箱,需要3个过程。
- 把冰箱门打开(得到打开门的冰箱),即冰箱开门(冰箱)
- 把大象装进去(打开门后,得到里面装着大象的冰箱),即冰箱装进(冰箱, 大象)
- 把冰箱门关上(打开门、装好大象后,获得关好门的冰箱),即冰箱关门(冰箱)
每个过程有一个阶段性的目标,依次完成这些过程,就能把大象装进冰箱。
总结:冰箱关门(冰箱装进(冰箱开门(冰箱), 大象))
面向对象:
为了把大象装进冰箱,需要做三个动作(或者叫行为)。
每个动作有一个执行者,它就是对象。
- 冰箱,你给我把门打开,即冰箱.开门()
- 冰箱,你给我把大象装进去(或者说,大象,你给我钻到冰箱里去),即冰箱.装进(大象)
- 冰箱,你给我把门关上,即冰箱.关门()
依次做这些动作,就能把大象装进冰箱。
总结:冰箱.开门().装进(大象).关门()
面对接口编程
1、面向接口编程和面向对象编程是什么关系
首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。
2、接口的本质
1)接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。
2)接口是在一定粒度视图上同类事物的抽象表示。注意这里我强调了在一定粒度视图上,因为“同类事物”这个概念是相对的,它因为粒度视图不同而不同。
面向对象思想和核心之一叫做多态性,什么叫多态性?说白了就是在某个粒度视图层面上对同类事物不加区别的对待而统一处理。而之所以敢这样做,就是因为有接口的存在。
3、面向接口编程综述
在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。
4、关于抽象类与接口
区别一:使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性。而一个东西该定义成抽象类还是接口,要根据具体环境的上下文决定,如使用动机。
区别二:抽象类和它的子类之间应该是一般和特殊的关系,而接口仅仅是它的子类应该实现的一组规则。(当然,有时也可能存在一般与特殊的关系,但我们使用接口的目的不在这里)