java之路----基础篇之面向对象

面向对象

首先谈谈面向对象之前得知道什么是面向对象:

  • 面向对象不是具体的技术,而是一种以对象为中心的思想,是对现实世界的理解和抽象,
  • 在面向对象的思想中,万物皆对象。面向对象拥有三大基本特性:封装,继承,多态(有些人会认为还有一个特征是抽象,但是这里面向对象实际上已经包含了抽象了)。五大原则:单一职责原则(SRP),开放封闭原则(OCP),里氏替换原则(LSP),依赖倒置原则(DIP),接口分离原则(ISP)。

再谈谈什么是面向过程:

  • 面向过程也是编程中的一种思想,只不过是以过程为中心,这是具体化的,流程化的。

二者之间的区别

  • 简单来说他们最大的区别在于侧重点的不同,我们都知道,程序=算法(方法,行为)+数据结构。而面向过程的侧重点在于算法,先确定如何操作数据,让后再决定如何组织数据以便于数据操作。而面向对象则相反,侧重点在于数据结构,先确定好如何去组织数据,然后再去操作数据。这就好像是看问题的角度不一样,一个是站在全局角度,一个是站在局部角度
  • 从思想的角度来讲:
    • 面向对象和面向过程就好像在家饿了,面向过程就是自己动手做吃的,你要淘米,煮饭,洗菜等等一系列过程才能吃上饭,而面向对象就是你决定点外卖,你不必知道饭店怎么做的,结果是一样的,最终都能吃上饭。但是其中的区别却很大,如果你是随便想吃点应付一下,送外卖需要时间,也有可能是途中耽搁了,可能需要很久,而在家泡面却只需要几分钟就能吃饱肚子。但是如果说你在家想吃满汉全席,面向过程这种方式,你要一步一步去做,前面也说了这是流程化的,等你做好估计都到了第二天了,而面向对象又不同了,面向对象是模块化的,你想吃满汉全席,你可以这家点个菜,那家点个菜,速度就上来了。所以这就是效率的问题,在面对小规模的问题时,面向过程就有一种优势。而面对大规模的问题,面向过程就有所不足了。
    • 或者这么说,蛋炒饭和盖浇饭的区别(灵活性对比),蛋炒饭,蛋和饭搅和在一起(耦合度高),但是当你做好蛋炒饭,又不想吃这个了,想吃其他的,你又要倒掉重新做,而盖浇饭,菜和饭是分离的(耦合度低),你不想吃青椒炒肉,想吃红烧肉盖饭,只需要换个菜盖上去就行了,从商业角度来讲,盖浇饭肯定是能获取到最大的一个利益的,因为灵活,可维护性好。
  • 从代码角度来讲:
    • 面向对象和面向过程实际上又是一样的,因为代码最终都是要一个流程一个流程去写。

你可能感兴趣的:(java基础,学习随笔)