面向对象的思想一直指导者我们软件的分析、设计与开发。java语言是一种面向对象的语言。在学习java之前,先回想一以下向过程和面向对象。

一面向过程

面向过程主张按功能来划分系统需求。每一个功能都负责对数据进行一次处理。每一个功能都接受一些数据。它最小的单位是函数,每一个函数负责完毕一个功能,整个系统由一个个函数组成,当中有一个主函数。作为程序的入口。主函数依次调用其它普通函数,普通函数之间依次调用。从而完毕整个软件系统的功能。事实上就是主函数负责把系统中的全部函数“串起来”。

从上面的图中我们不难发现面向过程的设计是自顶向下的逐层设计,在设计阶段就须要考虑每一个模块应该分解为那些子模块,每一个子模块有分解为那些更小的模块,直达模块细化到一个函数。每一个函数的存在都是为了实现上一层的函数。

试想一下,假设客户需求改变。那我们就要真对这个功能从上到下逐层对须要改变的地方进行改动。

从这里不难看它的可扩展性不强。所以它的维护成本相当的高。

二面向对象

它是一种更优秀的程序设计的方法,基本思想是使用类、对象、继承、封装、消息等基本概念来实现程序设计。

它是在处理问题时,从该问题所存在的事物本身出发。逐步认识事物的属性和行为特征。它比較接近人类的思维方式。

三比較面向过程、基于对象和面向对象。

面向过程:

就是说你对面坐的都是一一个的过程/函数/功能,它们的对面也都是函数。

在面向过程里,函数最大,一切以函数为中心,若干的函数模块构成了整个的函数系统。

基于对象:

基于对象没有继承和多态。基于对象是在已有对象的基础之上的。它把其它语言创建的对象统一起来,形成一个对象体系。基于对象语言的存在是借助其它语言存在的。比方javascript语言就是基于对象的,它使用一些封装好的对象。调用对象的方法,也能够设置对象的属性。可是无法派生新类,我们使用现有的对象的方法和属性。最常看到的就是js动和html的组合使用。

在定义js的的function时,基本都要先获得html的对象,然后对其进行操作。

假设没有了html的对象。js空有一身的武艺,却无用武之地。

面向对象:

面向过程的基础是函数,面向对象的基础是对象/类。类是对事物属性和函数的抽象封装。它给了函数一个归宿,通过这些函数,既能够改变其它对象的属性也能够改变自己的属性。封装、继承和多态是面向对象的三大特征。面向对象有了继承。有利于提高程序的扩展性。

四总结:

       在面向对象中,抽象是灵魂,继承是抽象的运用,是多态的基础。

Java学习(一)--面向对象(一)的更多相关文章

  1. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  2. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  3. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  4. 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类

    static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...

  5. java学习之面向对象概念

    思考的两种方式: 举例: 把大象放到冰箱里 一.面向过程 :[打开冰箱->把大象放里面->关上冰箱门]面向过程注重的是过程,也就是(动作[函数]),然后按照动作依次去执行就好了. 代表语言 ...

  6. JAVA学习总结-面向对象

    前言:java面向对象中的知识可以说是整个java基础最核心的部分,不知不觉已经学完快2个月了,是时候复习一波了,刚开始学习的时候被绕的很懵逼,这次总结完毕之后有了很多新的感悟,这就是所谓的每有会意, ...

  7. Java学习: 面向对象的使用与注意事项

    面向对象的使用与注意事项 面向过程:当需要实现一个功能的时候,每一个具体的步骤都需要亲力,详细处理每一个细节面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,来帮我做 ...

  8. 程序设计基础·Java学习笔记·面向对象(下)

    Java程序设计基础之面向对象(下) (补充了上的一些遗漏的知识,同时加入了自己的笔记的ヾ(•ω•`)o) (至于为什么分P,啊大概是为了自己查笔记方便(?)应该是("` 3′") ...

  9. 程序设计基础·Java学习笔记·面向对象(上)

    Java程序设计基础之面向对象(上) (自适应学习进度而进行记录的笔记,希望有一些小小的用处吧(^∀^●)ノシ) (新人上路,望多指教,如有错误,望指正,万分感谢(o゚v゚)ノ) 目录 一.面向对象 ...

随机推荐

  1. Ex 6_4 判断序列是否由合法单词组成..._第六次作业

    设字符串为s,字符串中字符的个数为n,vi[i]表示前i+1个字符是否能组成有效的单词vi[i]=true表示能组成有效的单词,vi[i]=false表示不能组成有效的单词,在每个字符串前加一个空格, ...

  2. 目标检测-ssd

    intro: ECCV 2016 Oral arxiv: http://arxiv.org/abs/1512.02325 paper: http://www.cs.unc.edu/~wliu/pape ...

  3. cf1108e 线段树区间更新+扫描线

    /* 有点像扫描线 思路:从左到右枚举每个点,枚举到点i时,把所有以i为起点的区间的影响删去 再加上以i-1为结尾的区间的影响 */ #include<bits/stdc++.h> usi ...

  4. poj3728 倍增法lca 好题!

    lca的好题!网上用st表和离线解的比较多,用树上倍增也是可以做的 不知道错在哪里,等刷完了这个专题再回来看 题解链接https://blog.csdn.net/Sd_Invol/article/de ...

  5. hdu4419

    对于这类面积覆盖的题,大致就两点要注意的 1.同一把矩形放在笛卡尔坐标系上做 2.pushup函数要注意下细节:及在统计子区间和之前要先判断是否有子区间 用sum数组来保存区间被覆盖的情况,如果遇到多 ...

  6. 遍历集合的Iterator删除其中的元素

    package list; import java.util.LinkedList; /* * 遍历集合的时候删除其中的元素 从后往前删,每次都删除的是最后一个元素,不涉及移位 */public cl ...

  7. Codeforces 1114F Please, another Queries on Array? 线段树

    Please, another Queries on Array? 利用欧拉函数的计算方法, 用线段树搞一搞就好啦. #include<bits/stdc++.h> #define LL ...

  8. 017 在SecureCRT中安装rz小工具

    1.安装yum 2.上传本地的文件进虚拟机 3.注意点 只是属于SecureCRT的命令,同时,在上传的位置是现在所在的位置 4.测试

  9. Environment error: “CodeBloks can't find compiler executable in your configured search path's for GNU GCC compiler”

    codeblock安装后,提示cant find compiler executable in your configured search paths for GNU GCC Compiler 可能 ...

  10. Spring框架学习10——JDBC Template 实现数据库操作

    为了简化持久化操作,Spring在JDBC API之上提供了JDBC Template组件. 1.添加依赖 添加Spring核心依赖,MySQL驱动 <!--Spring核心基础依赖--> ...