面向对象的思想一直指导者我们软件的分析、设计与开发。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. 16-client、offset、scroll系列

    1.client系列 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  2. 如何查看centos系统cpu/内存使用情况

    1.查看硬盘 [mushme@investide ~]$ df -ah 文件系统              容量  已用 可用 已用% 挂载点 /dev/cciss/c0d0p1     123G   ...

  3. python----线程进程协程

    python线程: import threading import time def show(arg): time.sleep() print('thread' + str(arg)) ): t = ...

  4. hdu1561 树形dp,依赖背包

    多重背包是某个物品可以选择多次,要把对物品数的枚举放在对w枚举外面 分组背包是某组的物品只能选一个,要把对每组物品的枚举放在对w枚举内侧 依赖背包是多层的分组背包,利用树形结构建立依赖关系,每个结点都 ...

  5. python 全栈开发,Day140(RabbitMQ,基于scrapy-redis实现分布式爬虫)

    一.RabbitMQ 队列 在生产者消费模型中,比如去餐馆吃饭的例子.生产者相当于厨师,队列相当于服务员,消费者就是你. 我们必须通过服务员,才能吃饭! 如果队列满了,队列会一直hold住.必须让消费 ...

  6. poj 2485 求最小生成树中 最长的一条边

    Sample Input 1 //T 3 //n0 990 692 //邻接矩阵990 0 179692 179 0Sample Output 692 prim # include <iostr ...

  7. php用json_encode中文问题

    echo json_encode($arr,JSON_UNESCAPED_UNICODE); 用这个中文就不会被转码了

  8. 【CSS3】响应式布局

    准备工作1:设置Meta标签 首先我们在使用Media的时候需要先设置下面这段代码,来兼容移动设备的展示效果: 1 <meta name="viewport" content ...

  9. 使用numpy产生随机数

    numpy中的random模块包含了很多方法可以用来产生随机数,这篇文章将对random中的一些常用方法做一个总结. 1.numpy.random.rand(d0, d1, ..., dn) 作用:产 ...

  10. (转)一位资深程序员大牛给予Java初学者的学习路线建议

    原文:http://geek.csdn.net/news/detail/238256 Java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是你是如何学习Java的 ...