面向对象编程的一个实质性的要素是抽象。人们通过抽象(abstraction)处理复杂性。

例如,人们不会把一辆汽车想象成由几万个互相独立的部分所组成的一套装置,而是把汽车想成一个具有自己独特行为的对象。这种抽象使人们可以很容易地将一辆汽车开到杂货店,而不会因组成汽车各部分零件过于复杂而不知所措。他们可以忽略引擎、传动及刹车系统的工作细节,将汽车作为一个整体来加以利用。

使用层级分类是管理抽象的一个有效方法。它允许你根据物理意义将复杂的系统分解为更多更易处理的小块。从外表看,汽车是一个独立的对象。一旦到了内部,你会看到汽车由若干子系统组成:驾驶系统,制动系统,音响系统,安全带,供暖,便携电话,等等。

再进一步细分,这些子系统由更多的专用元件组成。例如,音响系统由一台收音机、一个CD播放器、或许还有一台磁带放音机组成。从这里得到的重要启发是,你通过层级抽象对复杂的汽车(或任何另外复杂的系统)进行管理。

复杂系统的分层抽象也能被用于计算机程序设计。传统的面向过程程序的数据经过抽象可用若干个组成对象表示,程序中的过程步骤可看成是在这些对象之间进行消息收集。

这样,每一个对象都有它自己的独特行为特征。你可以把这些对象当作具体的实体,让它们对告诉它们做什么事的消息作出反应。这是面向对象编程的本质。

面向对象的概念是Java 的核心,对程序员来讲,重要的是要理解这些概念怎么转化为程序。你将会发现,在任何主要的软件工程项目中,软件都不可避免地要经历概念提出、

成长、衰老这样一个生命周期,而面向对象的程序设计,可以使软件在生命周期的每一个阶段都处变不惊,有足够的应变能力。例如,一旦你定义好了对象和指向这些对象的简明的、可靠的接口,你就能很从容很自信地解除或更替旧系统的某些组成部分。

java如何抽象一辆车,java新职篇:面向对象之抽象相关推荐

  1. 在java面向对象编程中_谈一谈你对封装_继承_多态概念的理解_Java新职篇:面向对象编程的3个原则是什么?...

    原标题:Java新职篇:面向对象编程的3个原则是什么? 所有面向对象的编程语言都提供帮助你实现面向对象模型的机制,这些机制是封装,继承及多态性.现在让我们来看一下它们的概念. 封装 封装(Encaps ...

  2. java什么是布尔型_Java新职篇:是什么是布尔型?

    原标题:Java新职篇:是什么是布尔型? Java有一种表示逻辑值的简单类型,称为布尔型.它的值只能是真或假这两个值中的一个.它是所有的诸如a 下面的程序说明了布尔类型的使用: // Demonstr ...

  3. Java新职篇:什么是键入程序

    既然Java面向对象的基础已经被讨论过了,接下来让我们看一些实际的Java程序.从编译及运行下面这个简短示例程序开始.你将看到,这个程序的功能比你想像的要多. /* This is a simple ...

  4. java新职篇:面向对象之抽象

    面向对象编程的一个实质性的要素是抽象.人们通过抽象(abstraction)处理复杂性. 例如,人们不会把一辆汽车想象成由几万个互相独立的部分所组成的一套装置,而是把汽车想成一个具有自己独特行为的对象 ...

  5. Java新职篇:面向对象编程的3个原则是什么?

    所有面向对象的编程语言都提供帮助你实现面向对象模型的机制,这些机制是封装,继承及多态性.现在让我们来看一下它们的概念. 封装 封装(Encapsulation)是将代码及其处理的数据绑定在一起的一种编 ...

  6. Java新职篇:变量的作用域和生存期

    到目前为止,我们使用的所有变量都是在方法main()的后面被声明.然而,Java允许变量在任何程序块内被声明.在第2章中已解释过了,程序块被包括在一对大括号中.一个程序块定义了一个作用域(scope) ...

  7. Java新职篇:一维数组

    数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信息分组的便利方法. 一维数 ...

  8. Java新职篇:类型提升的约定

    除了将byte型和shorts型提升到int型以外,Java定义了若干适用于表达式的类型提升规则(type promotion rules).首先,如刚才描述的,所有的byte型和short型的值被提 ...

  9. Java新职篇:声明一个变量

    变量是Java程序的一个基本存储单元.变量由一个标识符,类型及一个可选初始值的组合定义.此外,所有的变量都有一个作用域,定义变量的可见性,生存期.接下来讨论变量的这些元素. 声明一个变量 在Java中 ...

最新文章

  1. “误用姓名”,前哈佛教授炮轰中国学者“碰瓷”:“整件事都让人讨厌!
  2. mongodb的锁和高并发
  3. 1.14 实例:完善除法运算的错误信息
  4. C# 获取属性的displayName
  5. Windows半透明窗口开发技巧
  6. 利用Date类计算生活时间
  7. “融合、智能、绿色”施耐德电气线上工博以全生命周期解决方案助推数字化
  8. CSS: 深入理解BFC和Margin Collapse (margin叠加或者合并外边距)
  9. 正则表达式 Java
  10. 笔记本使用Nsight注意事项
  11. linux中python编辑器_Python 编辑器
  12. android m4a播放器,如何在android上解码m4a音频
  13. 删除UltraISO(软碟通)卸载后的遗留文件“isoshl64.dll”
  14. 身份认证协议攻击怎么解决
  15. 多连接数据库管理Navicat Premium 中文
  16. IOS7 适配以及向下兼容问题
  17. iphone4 的使用技巧(经典呀)
  18. 话机按键音效——DTMF生成
  19. java 如何使用ocr_Java使用tess4J进行OCR图像识别
  20. Python编程入门基础学习

热门文章

  1. 【渝粤题库】国家开放大学2021春1121健康教育与健康促进题目
  2. vue快速修改数组的某个值_详解vue组件三大核心概念
  3. 【C++编程题1】数组指针之字符串排序
  4. mysql把一行保存到另一个表_MYSQL:如何复制整个行从一个表到另一个在MySQL与第二个表有一个额外的列?...
  5. 0基础怎么学python10010基础怎么学python_0基础学python全套python教程
  6. 打砖块小游戏php程序,利用原生js实现html5打砖块小游戏(代码示例)
  7. NOIP模拟测试20「周·任·飞」
  8. 【小记】-006--关于高度塌陷的问题
  9. ubantu 中配置Flash Player
  10. HTML 4.01 规定了三种文档类型