回忆面向对象思想

 
 
    面向对象,主页君也不敢对其多说什么,毕竟这是一个看似简单,但是其实蕴含很深层次理
 
论的东西,并不是看书就可以理解的,其实也是要在很多实际操作中学习,积累。
 
     面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机
 
编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组
 
合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运
 
算,每个对象都能够接收信息、处理数据和向其它对象发送信息。这个是它的基本概念。具体
 
引用自百度百科,百度百科引用自哪我也无从知道了哈。这个概念通俗易懂,是主页君见过的
 
写的比较好的解释了,话说OOP的架构让我们的开发更加敏捷,方便,减少了代码的复杂度,
 
不容易出错,确实是一个很好的编程框架
 
     下面来说几个概念:
 
    1)对象 对象是运行期的基本实体,它是一个封装了数据和操作这些数据的代码的逻辑实
 
体。
 
 
 
  2)类 类是具有相同类型的对象的抽象。一个对象所包含的所有数据和代码可以通过类来
 
构造。
 
 
 
  3)封装 封装是将数据和代码捆绑到一起,避免了外界的干扰和不确定性。对象的某些数
 
据和代码可以是私有的,不能被外界访问,以此实现对数据和代码不同级别的访问权限。
 
 
 
  4)继承 继承是让某个类型的对象获得另一个类型的对象的特征。通过继承可以实现代码
 
的重用:从已存在的类派生出的一个新类将自动具有原来那个类的特性,同时,它还可以拥有
 
自己的新特性。
 
 
 
  5)多态 多态是指不同事物具有不同表现形式的能力。多态机制使具有不同内部结构的对
 
象可以共享相同的外部接口,通过这种方式减少代码的复杂度。
 
 
 
  6)动态绑定 绑定指的是将一个过程调用与相应代码链接起来的行为。动态绑定是指与给
 
定的过程调用相关联的代码只有在运行期才可知的一种绑定,它是多态实现的具体形式。
 
 
 
  7)消息传递 对象之间需要相互沟通,沟通的途径就是对象之间收发信息。消息内容包括
 
接收消息的对象的标识,需要调用的函数的标识,以及必要的信息。消息传递的概念使得对现
 
实世界的描述更容易。
 
 
 
  8)方法 是定义一个类可以做的,但不一定会去做的事。
 
 面向对象主要特征:
 
 
 
  封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据
 
和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到
 
对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态
 
的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象
 
者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。
 
 
 
  继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一
 
个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一
 
个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承
 
性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促
 
进系统的可扩充性。
 
 
 
  多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不
 
同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细
 
节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被
 
发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会
 
完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议
 
存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些
 
低层次上生成的对象就能给通用消息以不同的响应。在OOP中可通过在派生类中重定义基类函
 
数(定义为重载函数或虚函数)来实现多态性。
 
这三个特征便是OOP的五所不能之处,OC也是遵循了其中的很多特点,当然也有特殊之处。
 
这个就算复习一下知识吧,话说这些东西并不是背的,只有在以后的写程序中多多体会。 

Java核心思想的更多相关文章

  1. 深入Java核心 Java中多态的实现机制(1)

    在疯狂java中,多态是这样解释的: 多态:相同类型的变量,调用同一个方法时,呈现出多中不同的行为特征, 这就是多态. 加上下面的解释:(多态四小类:强制的,重载的,参数的和包含的) 同时, 还用人这 ...

  2. 《深入理解Spark:核心思想与源码分析》——SparkContext的初始化(叔篇)——TaskScheduler的启动

    <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...

  3. Java编程思想——初始化与清理

    PS:最近一直忙于项目开发..所以一直没有写博客..趁着空闲期间来一发.. 学习内容: 1.初始化 2.清理 1.初始化   虽然自己的Java基础还是比较良好的..但是在解读编程思想的时候还是发现了 ...

  4. 《深入理解Spark:核心思想与源码分析》(前言及第1章)

    自己牺牲了7个月的周末和下班空闲时间,通过研究Spark源码和原理,总结整理的<深入理解Spark:核心思想与源码分析>一书现在已经正式出版上市,目前亚马逊.京东.当当.天猫等网站均有销售 ...

  5. 《深入理解Spark:核心思想与源码分析》(第2章)

    <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...

  6. 《深入理解Spark:核心思想与源码分析》一书正式出版上市

    自己牺牲了7个月的周末和下班空闲时间,通过研究Spark源码和原理,总结整理的<深入理解Spark:核心思想与源码分析>一书现在已经正式出版上市,目前亚马逊.京东.当当.天猫等网站均有销售 ...

  7. 《深入理解Spark:核心思想与源码分析》正式出版上市

    自己牺牲了7个月的周末和下班空闲时间,通过研究Spark源码和原理,总结整理的<深入理解Spark:核心思想与源码分析>一书现在已经正式出版上市,目前亚马逊.京东.当当.天猫等网站均有销售 ...

  8. Hibernate核心思想—ORM机制(一)

    转:http://blog.csdn.net/wanghuan203/article/details/7566518 hibernate是一个采用ORM(Object/Relation Mapping ...

  9. Java编程思想(11~17)

    [注:此博客旨在从<Java编程思想>这本书的目录结构上来检验自己的Java基础知识,只为笔记之用] 第十一章 持有对象 11.1 泛型和类型安全的容器>eg: List<St ...

随机推荐

  1. CMS本质上是什么

    2015-121.数据可以任意取和构造,结构也很自由,不一定是“站点-栏目-文章-评论”.2.主要用于显示,前台不产生数据(评论.浏览次数除外).3.在模版进行循环.判断,也比后台写代码要方便很多很多 ...

  2. 15天玩转redis —— 第十一篇 让你彻底了解RDB存储结构

    接着上一篇说,这里我们来继续分析一下RDB文件存储结构,首先大家都知道RDB文件是在redis的“快照”的模式下才会产生,那么如果 我们理解了RDB文件的结构,是不是让我们对“快照”模式能做到一个心中 ...

  3. MongoDB学习笔记~为IMongoRepository接口添加了排序和表达式树,针对官方驱动

    回到目录 MongoDB的官方驱动,语法更好,更强 之前写过关于IMongoRepository仓储的文章,在mongodb的驱动选择上使用了NoRM,但是进行$ref引用类型导航时出现了问题,它对引 ...

  4. MongoDB学习笔记~大叔框架实体更新支持N层嵌套~递归递归我爱你!

    回到目录 递归递归我爱你!只要你想做,就一定能成功! 从一到二,从二到三,它是容易的,也是没什么可搞的,或者说,它是一种流水线的方式,而从三到十,从十到百,它注定要有一个质的突破,否则,它会把你累死, ...

  5. NAS硬盘损坏拷贝时的处理办法及 UBUNTU下遍历删除某目录的方法

    NAS突然挂了,说是硬盘坏了,我不信呀,换块上去先.原来的硬盘要经过一定的操作才能使用 官方给出的解决方案:我如何使用电脑来还原存储在 DiskStation 中的数据? 然后,你再拷贝到新的NAS中 ...

  6. sql中毫秒数与格式化时间的转换

    使用MYSQL自带的函数FROM_UNIXTIME(unix_timestamp,format). 如: SELECT FROM_UNIXTIME(1461201575895/1000,"% ...

  7. 支持+-*/()int 型数据的计算机c++实现

    #include <iostream> #include<sstream> using namespace std; template<typename T> cl ...

  8. 【CSS】创建布局

    随着对分离HTML元素的语义重要性与其表现的影响的不断强调,CSS在HTML5元素布局方面的作用越来越重要. 1. 定位内容 控制内容最简单的方式就是通过定位,这允许你使用浏览器改变元素的布局方式. ...

  9. java中的大数BigInteger

    compareTo比较大小 equals比较是否相等 ,不能用== while(cin.hasNext())//等价于!=EOF n=cin.nextBigInteger();//读入一个大整数 Sy ...

  10. [备份]破解Xamarin

    [转]试用了一阵子Mono For Android,今天到期了,,囊中羞涩,只好破解. 说是要在vs2013的英文界面下运行破解包,不知道是真是假,下载并安装了一个. 然后又下载了破解包.是个名为xa ...