回忆面向对象思想

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

     Property Ant 内置的Property 系统属性 Ant附加的属性 自定义Property Ant :Property properties是由key-value组成的集合,就是Java中 ...

  2. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path解决方案

    0.环境: win7系统,Tomcat9配置无误. 1.错误: 项目中某一.jps页面忽然出现错误,鼠标点上去为:The superclass "javax.servlet.http.Htt ...

  3. java实现REST方式的webService

    一. 简介 WebService有两种方式,一是SOAP方式,二是REST方式.SOAP是基于XML的交互,WSDL也是一个XML文档, 可以使用WSDL作为SOAP的描述文件:REST是基于HTTP ...

  4. CSS3动画事件

    CSS3 的动画效果强大,在移动端使用广泛,动画执行开始和结束都可以使用JS来监听其事件. animationstart animationend 以下是一个示例 <!DOCTYPE html& ...

  5. 关于java中的MANIFEST.MF 文件内容

    打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录, 这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息.可以简化Java应用程 ...

  6. mysql 一些命令

    show processlist; 查看服务进程列表show engines; 所有提供的引擎show variables like '%storage_engine%'; 当前默认的存储引擎show ...

  7. SPOJ GSS1 Can you answer these queries I[线段树]

    Description You are given a sequence A[1], A[2], ..., A[N] . ( |A[i]| ≤ 15007 , 1 ≤ N ≤ 50000 ). A q ...

  8. NYOJ 70

    描述:给定两个数n,m,其中m是一个素数. 将n(0<=n<=2^31)的阶乘分解质因数,求其中有多少个m. 注:^为求幂符号. 输入: 第一行是一个整数s(0<s<=100) ...

  9. angular学习笔记(二十九)-$q服务

    angular中的$q是用来处理异步的(主要当然是http交互啦~). $q采用的是promise式的异步编程.什么是promise异步编程呢? 异步编程最重要的核心就是回调,因为有回调函数,所以才构 ...

  10. c语言函数

    听着函数这两个字多多少少都会觉得有点复杂吧.因为一想到函数大多数人都会想到f(x),但其实c语言里面的函数不是那样的,老师教了一个很好的理解方法函数就是个机器人,而这个机器人是你自己做出来的.所有不用 ...