zoukankan      html  css  js  c++  java
  • 犀牛书学习笔记(4):面向对象(OOP)之回顾JAVA

    这篇要谈的面向对象(OOP),OOP被普遍认识并应用,我的经历是从JAVA语言开始,javascript一直都说:我和JAVA没关系,但从前面的语法结构、运算符、标示符关键字等等几乎都与JAVA一样,起码来说是大量、甚至是为了迎合市场需求,完全照抄了JAVA,但其语言核心确实是两个完全不同的语言。但js确实是面向对象语言,因为它支持封装、聚集、继承和多态四个OOP基本特征。

    犀牛书对js的OOP讲解个人感觉不够直接易懂,以我多年来JAVA建立的严谨OOP思维,看函数章节时非常的头痛(OOP语言怎么会有这么麻烦的函数?),当看到对象章节,本以为会容易理解,结果几乎崩溃。但为了掌握这门语言,耐着性子,翻阅了其他的书籍,逐步有了一些新的理解,特别是匹配JAVA语言背景的情况的理解,不一定正确,这里记录下来。

    OOP中,首先应该有类定义,来是现实世界的描绘,是对象的模板,对象从类实例化而来,是类的具象化。ECMAScript把对象定义描述为对象的配方,没有正式的类,因此类并不存在。既然规范这么定义,包括基本权威书籍,都没有将类概念单独拿出来说,从我的理解,其实对象定义,是近似于类,起码从功能和作用来说,两者是等价的,可以两者混在一起来说。

    回顾JAVA语言的对象,目的是借助对JAVA对象概念,帮助我们理解JS的对象。没有翻阅资料,凭印象来聊聊,主要是基本概念,不保证严谨。

    1、一切均是对象。为了效率,JAVA中基本类型如int、boolean等不是对象,但都具有封装对象,其他一切均可描述为对象,都继承自根对象Object。

    2、对象都具有构造函数,在对象实例化过程中执行初始化,且首先会调用super()。如果不定义构造函数,JVM会默认执行无参数构造函数;

    3、对象由构造函数、属性和方法组成,为保证封装性,可使用作用域标示符private、protected、public、default等标示可访问性;

    4、类、抽象类、接口都是对象,也都是继承自Object。

    5、类定义是对现实世界的抽象,对象从类实例化而来,是以类为模板,具象化的实体;

    6、抽象类是类的模板,体现整体和个体之间的差异化;

    7、接口是对象间交互方式的约定,是定义类的契约。

    从这些描述,可以非常容易的想象出一个以Object为根的对象树。良好的封装性、规范的定义语法、清晰的结构关系,使之成为非常稳定可靠的对象描述系统。

    以OOP思路对现实进行建模的时候,对象属性抽象物件的属性,对象方法抽象物件的行为,方法同时作为对象间交流的消息传递接口,实现对象间的交互,从而构建系统模型。

    总体上讲,JAVA、C++这类语言是基于类的面向对象,而JS是基于原型的面向对象,具有基于类的面向对象基础之后,再理解JS就感觉非常的别扭,但对于已经属性基于类的面向对象知识之后,不可避免会受到干扰。个人理解,在JS面向原型面向对象语言学习的时候,如果比对你的JAVA经验,能够找到相同和不同的地方,能够更加透彻的加深理解。毕竟虽然实现面对对象的方式不同,但两者要达成的目标是一致的。

    后面一篇我们将借助对JAVA对象的理解,来学习JS的对象模型。

  • 相关阅读:
    【数据库领域】mysql中in与or对比
    数据库优化
    数据库-索引
    数据库-事务
    数据库-视图
    数据库设计
    数据库编程提高
    数据库高级操作
    数据库基本操作
    with-上下文管理器
  • 原文地址:https://www.cnblogs.com/laohoo/p/3418686.html
Copyright © 2011-2022 走看看