回忆面向对象思想

 
 
    面向对象,主页君也不敢对其多说什么,毕竟这是一个看似简单,但是其实蕴含很深层次理
 
论的东西,并不是看书就可以理解的,其实也是要在很多实际操作中学习,积累。
 
     面向对象编程(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. SQL SERVER中隐式转换的一些细节浅析

    其实这是一篇没有技术含量的文章,精通SQL优化的请绕道.这个缘起于在优化一个SQL过程中,同事问了我一个问题,为什么SQL中存在隐式转换,但是执行计划没有变? 我思索了一下,觉得这个问题也有点意思,说 ...

  2. SQL Server 2008 安装过程中遇到“性能计数器注册表配置单元一致性”检查失败 问题的解决方法

    操作步骤: 1. 在 Microsoft Windows 2003 或 Windows XP 桌面上,依次单击"开始"."运行",然后在"打开&quo ...

  3. SQLServer中修改字段为空

    ALTER 表名 table1 ALTER COLUMN [字段] 类型 NULL; 例如: ) COLLATE Chinese_PRC_CI_AS NULL;

  4. 理解 Keystone 核心概念 - 每天5分钟玩转 OpenStack(18)

    作为 OpenStack 的基础支持服务,Keystone 做下面这几件事情: 管理用户及其权限 维护 OpenStack Services 的 Endpoint Authentication(认证) ...

  5. XCode6 开发本地化应用

    使用 XCode 6 开发本地化时,第一步,不能忘记,否则在添加本地化文件时,可能会找不到简体中文. 此外,如果使用 NSLocalizedString(@"xxx", nil) ...

  6. windows下OpenSSL加密证书安装步骤与使用方法

    OpenSSL加密证书一般用于签名认证,含私钥和公钥.在Linux系统中,OpenSSL一般是已经安装好了,可以直接使用.而在Windows系统中,是需要安装使用的. 最近在使用支付平台时,用到了Op ...

  7. strstr 函数的实现

    strstr函数:返回主串中子字符串的位置后的所有字符. #include <stdio.h> const char *my_strstr(const char *str, const c ...

  8. [diango]批量导入不重复数据

    去年研究导入数据的时候写了一个批量导入数据的脚本,但有个问题,如果导入这批数据在数据库中已经存在,那么我们导入的数据不就重复了么,本文就讨论如何解决这个问题? 程序如下: #coding:utf-8 ...

  9. tomcat配置SSL双向认证

    一.SSL简单介绍 SSL(Secure Sockets Layer 安全套接层)就是一种协议(规范),用于保障客户端和服务器端通信的安全,以免通信时传输的信息被窃取或者修改. 怎样保障数据传输安全? ...

  10. [NOIP2014]自测

    这两天做完了2014年的noip提高. 因为以前看了SDSC2016时gty的课件,题目思路都知道了一点,做起来没多大困难. 100+100+75+100+100+70=545 里面水分好多,好多题都 ...