-- ========================================================
-- ylb:Java
-- author:ylbtech
-- Type:面向对象编程
-- munu:面向对象编程(Java, C#)
-- thankyou:sunshine,谢谢您的付出
-- 7:11 2012/3/17
-- ========================================================

3.1 面向对象编程
我们做任何一件事情都要有动机、有思路、有目标,就好比我们来学习,是因为不能熟练掌握一门实用的技术而不能找到一份好工作,还是因为我们要有了一份认证证书才能找到一份好工作呢?在目前社会证书满天飞的情况下,答案显然是前者,那么我们的思路和目标就要相应的调整了。拿证的目标是最终通过考试,可以临阵磨枪;掌握技能的目标是抓好平时积累,力求提高技能的熟练程度,毕竟任何软件公司是不会要一个一周才写出一条程序的人当程序员的。编程的具体问题也是这样。C语言是面向过程的,目标是走通完成的流程,过程中会发生很多调用,但是最终会执行完程序过程,所以我们编写C语言程序的时候重点是要放在main函数内部的流程处理与函数的调用上面。Java是纯面向对象的,目标是调用各种对象的数据和方法以完成希望实现的各种功能,这样我们在编写Java程序的时候,main函数已经不再是主要的问题了,我们需要把主思路放在如何找到合适的类或者编写适合的类,并且如何调用其功能上面。
3.2 对象和类
3.2.1 对象(Object)

对象是面向对象方法的核心,首先从下面几方面理解这一重要概念。
1.对象具有很强的表达能力和描述功能。
我们要研究的任何事和物统称为对象。
1).对象可以是看的见、摸的着的有形实体,如计算机、飞机、汽车等;
2).对象也可以表示人或组织起的作用。如治病、教学、生产等;
3).对象还可以表示事件,如各种事故、演出、战斗、开会等;
4).对象更可以表示规则,如各种专家规则、约束条件、正则表达式等。
综上所述,对象既能表示最简单的结构化的数据,又能表示非结构化的、抽象的、复杂的事件和规则。
2.描述对象的两个要素:属性和方法
1).属性是用于描述对象静态特性(架构特征)的一个数据项。如描述一个人可用姓名、性别、身份证号等属性。
2).方法(也称服务)是用于描述对象动态特性(行为特征)的一个操作系列。如每个人都有工作、学习等行为特征。
3.对象体现了封装性能——实现了数据与操作的结合
对象就是一组属性和相关的方法的集合。这是面向对象方法和结构化方法的重大区别之一。
对象把它全部的属性和全部的方法结合在一起,形成了一个独立的基本单位。也就是说,对象将数据和施加于数据上的操作打包成一个不可分割的最基本的模块,使得仅有该类的有限个方法才可以操作、改变这些数据。这样,当数据出错时,只需检查有限个方法就可以。这是面向对象方法的封装性的一个重要表现。
4.对象具有唯一的标识(以下简称OID)
5.具体的对象必须参与一个或一个以上的类
在实际应用中,具体的对象应当参与类并作为该类的一个实例。在具体应用时,类实例和对象是同义词。
6.消息(Message)
对象之间是通过的发送和接收消息来建立联系的。
对象通过对外提供服务(方法)在系统中发挥它的作用。当系统中的其他对象要求这个对象执行某一服务时,面向对象方法就把向这个对象发送的服务请求称为消息。通过消息进行对象之间的通讯,如图3-1所示。这也是面向对象方法的一个原则:消息通讯为对象之间的联系提供了唯一合法的动态联系途径,从而确保了对象的封装性得到很好地实现。对象之间既能相互配合,又能够各自独立,互不干扰。

7.对象具有高度的抽象性(Abstraction)
在面向对象的方法中,对象具有最高的概括和抽象能力:它可作为面向对象编程语言的类的最高的父类——根。如Java或C++语言都把最高层类都定为抽象的对象(Object)。
3.2.2 类
类也是面向对象方法的一个非常重要的概念。把众多事物归纳、划分成类是我们在认识世界时经常采用的方法。分类所依据的原则是抽象,也就是忽略事物的本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性并将具有向同性质的事物划分为同一个类。例如:人、树、山等都属于高度抽象化的类。在面向对象的方法中,也采用了类的概念,并给出了下面的定义。
1.类是具有相同语义特性的对相集合。
所谓相同的语义特性是指:
1).同一类中的对象有相同的属性(也称为成员变量,它描述该类静态特性或结构特性)
2).同一类中的对象有相同的方法(也称为服务,它描述的是该类行为特性和动态特征)
3).同一类中的对象遵守相同的语义规则(共同的约束和规则)
2.为什么要有“类”的概念?
有了类的概念之后,在具体的应用时就会大大地简化编程并提高效率:成千上万个对象如果都有相同的特性,只需统一地定义一个类,然后用这个类作为创建模板类建立众多的对象(类实例)就可。因此,往往将类形象地比喻为一个制造它的实力(对象)工厂,如图3-2所示。

作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/ylbtech/archive/2012/05/07/2487732.html

Java-P:面向对象编程相关推荐

  1. java 168转换成861_java实验-java语言面向对象编程基础

    java实验-java语言面向对象编程基础 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 8.90 积分 广州大学学生实验报告广州大学学生实验报告 ...

  2. JAVA的面向对象编程

    JAVA的面向对象编程 面向对象主要针对面向过程. 面向过程的基本单元是函数. 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 全部的事物都有两个方面: 有什么(属性):用来描写叙 ...

  3. 使用java实现面向对象编程第十章嗖嗖移动业务大厅项目_ACCP6.0使用Java实现面向对象编程-第一章.ppt...

    ACCP6.0使用Java实现面向对象编程-第一章 练习--用类图设计Dog和Penguin类 需求说明: 运用面向对象思想抽象出Dog类和Penguin类,画出对应类图 根据类图编写Dog类和Pen ...

  4. JAVA的面向对象编程总结(第一部分)~

    面向对象主要针对面向过程. 面向过程的基本单元是函数. 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做什么(方法) ...

  5. JAVA的面向对象编程--------课堂笔记

      面向对象主要针对面向过程. 面向过程的基本单元是函数.   什么是对象:EVERYTHING IS OBJECT(万物皆对象)   所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做 ...

  6. java OOP面向对象编程—2

    目录 第一节:static关键字 1.1 static 变量 1.2 静态方法 1.3 static 代码块 1.4 static 的优点和缺点 第二节: package和import 2.1 pac ...

  7. Java学习——面向对象编程思想

    目录 一. 基本概念 二. 面向对象与面向过程的区别 三. 面向对象程序设计的类与对象 3.1 对象 3.2 类 四. 面向对象的四大特征 4.1 抽象 4.2 继承 4.3 封装 4.4 多态 1) ...

  8. 使用java实现面向对象编程

            第一章:抽象和封装 学习面向对象,理解其中的概念只是前提,灵活应用才是目的 面向对象编程比较抽象,想要真正掌握,需要一个漫长,积累经验的的过程,在学习中不能操之过急,要多思考,多总结, ...

  9. Java之面向对象编程

    上一篇文章:Java语法疯狂魔鬼练(三) Java面向对象 面向对象三个特点 Java类 类的定义 成员变量 方法的定义 下一篇文章 面向机器的语言:汇编语言,每种计算机都有自己的特殊的机器指令,这些 ...

  10. (JAVA)面向对象编程(基础部分)

    韩顺平老师==>视频链接 文章目录: 1.类与对象 1.1看一个养猫猫问题 1.2使用现有技术解决 1.3现有技术解决的缺点分析 1.4一个程序就是一个世界,有很多事物(对象[属性, 行为]) ...

最新文章

  1. python+unittest+excel接口自动化_Python+requests+unittest+excel实现接口自动化测试框架
  2. Linux之Sed详解
  3. 敲敲代码调调参就给钱,你来不来?| 论文有奖复现
  4. 肝!教你用Python抓取某天下楼盘数据
  5. 成为Java流大师–第1部分:创建流
  6. python安装(原系统中已有python2)
  7. Ubuntu搭建nfs服务器
  8. 用matlab做数据处理的几个小坑
  9. C/C++ 最易受攻击、70% 漏洞无效,揭秘全球开源组件安全现状
  10. lua 函数 默认值_Unity热更新框架之xLua
  11. pg_lightool-postgres数据分布查看工具
  12. python解常微分方程龙格库_求解常微分方程组初值问题的龙格库塔法分析及其C代码...
  13. 小程序 web-view 打开 微信公众号文章
  14. 独家 | 机器学习解释模型:黑盒VS白盒(附资料链接)
  15. c++串口配置及DCB结构体
  16. 三星s3 android8.0,三星最新安卓8.0升级计划:这款老机子有戏
  17. win10网上邻居无法显示计算机,w10网上邻居看不到其他电脑的解决方法[多图]
  18. Eclipse 导入工程乱码的问题之解决方法
  19. C++:取整操作ceil()、floor()、round()
  20. 高防CDN有什么优点

热门文章

  1. 深度学习与TensorFlow:VGG论文复现
  2. syntaxnet python调用
  3. 拼接图像亮度均匀调整_品质不变 价格更香 | 爆款拼接屏新品上市
  4. 查看本地oracle密码是多少钱,Oracle 本地验证和密码文件
  5. IDEA Docker 插件安装
  6. 物流机器人小车的运动控制与定位
  7. Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
  8. 动态网页开发技术(二):Servlet
  9. 布隆过滤器及其数学推导
  10. 查看服务器内存、CPU、网络等占用情况的命令--汇总