1.1.1对象的抽象:抽象是一种归纳或总结,对象是现实世界物体特征的实例。

(1)一切皆是对象。

(2)类是对象的抽象。

1.1.2 对象的使用:

当对象被抽象为类以后,就可以创建具体的实例来操作了。每个实例都是其所属类的一个精确而又不同的个体,在OOP编程中,类的实例被称为对象。由于对象是类的实例,所以创建对象的操作称为实例化。

tip:

类不是面向对象编程的实质性内涵。面向对象编程的实质性内涵是将所有的业务逻辑单元都视为一个对象,(该对象是抽象化的);并且,类也不是唯一的用来完成面向对象编程的方法,例如,js使用构造器和原型来完成面向对象的开发。

不能将面向对象误解为面向类。

1.1.3 易犯的错误

对象:一般认为对象是现实世界物体特征的抽象个体,它反映了系统为止保存信息和与它交互的能力。它的一些属性及功能的一个封装体,在程序设计领域,可以用公式表示:

对象=数据+作用于这些数据上的操作(算法)

类是具有相同操作功能(方法)和数据(属性)的对象的集合,是抽象后的集合,它给规定了其中对象的共有属性和方法;对象是类的实例。

对象和类的关系相当于一般的程序设计语言中变量和变量类型的关系。所以,类有时也被称为一种数据类型,它可以看作抽象数据类型的具体实现。

1.1.4 面向对象程序设计的优点和基本特征

基本优点:

(1)由于面向对象程序设计的可重用性,可以在应用程序中大量采用成熟的类库,从而可以缩短开发时间。

(2)应用程序更易于维护、更新、升级。

基本特征:

(1)封装性

(2)继承性

(3)多态性

(4)抽象性(一些用户设计总结的):一是过程抽象,二是数据抽象。

1.1.5 面向对象和结构化程序设计的区别:

最大的区别在于前者首先关心的是要所处理的数据,而后者首先关心的是功能。

面向对象的编程 面向过程的编程
Methods方法 Function函数
Object方法 Modules模块
Message方法 Argument参数
Attribute属性 Variable变量

1.2 创建类

demo:

//定义一个类

function HelloWord(){

this.printInfo = function(){

return "hi, word!";

}

}

//创建类的实例

var oHelloWord = new HelloWord();

//调用方法,将结果存在一个变量

var result = oHelloWord.printInfo();

//弹出结果

alert(result);

类的定义:

(1)类由两部分组成:类声明和类体。类声明由构造函数定义,函数体就是类体,类的属性和方法都在类体中定义:

function 类名(arg_1,arg_2,....,arg_n){

//类体

}

类名首字母大写,按照帕斯卡命名规范,

(2)可以在类体内定义属性。若要创建属性,最简单的方法是使用 this 关键字定义变量的方式。

this.age;

(3)可以在类体内定义方法。若要创建方法,可以使用function 关键字创建匿名函数定义,将匿名函数赋给一个变量,并且使用 this 关键字引用该变量。

this.showInfo = function(){

return(~)

}

和属性的定义类似,只不过属性的类型是一个Function。

1.2.3 关于构造器的方法

在使用函数创建类时,函数本身也被称为该类的构造器(也称构造器方法、构造方法、构造函数等)。

构造器方法是没有返回值的。当创建该类的实例时,必须调用该类的构造器方法。

也可以构造一个带有参数的类,使用参数可以为类中不同的对象改变属性。

1.2.4 获取构造器方法

所有的构造器都是类,但是,并非所有的类都是构造器。内建的类都是使用构造器创建的类,但是宿主对象( 例如 window、navigator )可能不是。

对实例使用 constructor 属性,便可以获取实例的构造器方法。

1.3 类的使用

在创建类了以后,就可以使用类了,要使用类,首先必须创建该类的一个实例,一般会将实例作为值赋给一个变量。在创建类的一个实例后,该实例就会捆绑该类中定义的方法和属性了,然后就可以调用方法和属性了。类的实例也被称为对象。

tip:静态类无需实例化就可以直接调用类的方法和属性。在使用属性和方法的时候,要查看帮助文档进行了解。例如:Math的静态属性PI。

1.3.1 创建类的实例

一般会用 new 关键字。

js中的类也是某一样事物的抽象,也必须创建实例。

构造器方法也可以带参数。

以下几种类不需要使用new 就可以实例化。

(1)Object类

var myCircle = new Object();

var myCircle = {};

可以同时给她赋值:var myCircle = {radius:5,area:3.14*5*5};

在{}也可以使用变量:

var radius = 5;

var myCircle = {radius:radius,area:(Math.PI*radius*radius)}; 括号将对它们中的表达式进行计算,然后将返回的值赋给属性 area。

可以在嵌套数组把Object 类初始化。

var newObject = {nickName:"xiaowu",projects:["Flash","Hbuilder"]};

2、Array 类的实例化

var myArray = new Array();

var myArray = [];

为该实例赋值:var myArray = [5,3.14*5*5];

在[]内也可以使用变量:

var radius = 5;

var myArray = [radius,Math.PI*radius*radius];

1.3.2 访问对象属性

使用“.”运算符。

属性的使用分为两个方面:

(1)获取对象属性的值,也被称为读取属性。

(2)设置对象属性的值,也被称为写属性值,为属性赋值或改变属性的值。

1.3.3 调用对象的方法

类中定义的函数被称为方法,可以通过在类的实例后点“ . ”运算符的后面加上方法名来调用对象的方法。方法传递参数就像调用函数那样。

面向对象变成(OOP)-创建类和使用类的更多相关文章

  1. JavaScript的面向对象编程(OOP)(一)——类

    在学习JavaScript面向对象的编程之前,需要知道,并了解面向对象的一些基本的常识.初学者中大多数都以为面向对象中,面向对象的编程是很重要和占据很大一部分精力.笔者在之前也是认为OOP是面向对象的 ...

  2. 【译文】 C#面向对象的基本概念 (Basic C# OOP Concept) 第一部分(类,对象,变量,方法,访问修饰符)

    译文出处:http://www.codeproject.com/Articles/838365/Basic-Csharp-OOP-Concept 相关文档:http://files.cnblogs.c ...

  3. python基础----面向对象的程序设计(五个阶段、对小白的忠告、关于OOP常用术语)、类、对象

    一.面向对象的软件开发有如下几个阶段                                              1.面向对象分析(object oriented analysis ,O ...

  4. 2016/1/17 笔记 1,面向对象编程OOP 2,类 全

    面向对象编程OOP 编程方式的发展 1,面向过程 重用性低 维护工作量大  2,面向对象 重用性高 维护容易 概念 1,对象 Object 一个具体的事物 是类的实例      2,类Class 同一 ...

  5. 面向对象day1,创建类和对象时,对象内存是在哪

    上面我创建了两个类,一个是测试类,在测试包里面,一个是生产类,在src文件里面.可以看到,调用类里面的对象的时候需要先创建一个对象,然后通过对象来调用类里面的属性和方法等,但是这个时候我得先记录一下, ...

  6. JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式

    相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...

  7. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  8. [Java入门笔记] 面向对象编程基础(一):类和对象

    什么是面向对象编程? 我们先来看看几个概念: 面向过程程序设计 面向过程,是根据事情发展的步骤,按进行的顺序过程划分,面向过程其实是最为实际的一种思考方式,可以说面向过程是一种基础的方法,它考虑的是实 ...

  9. JavaScript面向对象编程(二)构造函数和类

    new关键字和构造函数 在文章JavaScript面向对象编程(一)原型与继承中讨论啦JavaScript中原型的概念,并且提到了new关键字和构造函数.利用new关键字构造对象的实例代码如下: // ...

随机推荐

  1. java 垒骰子

    垒骰子 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的 ...

  2. 图像检索:CEDD(Color and Edge Directivity Descriptor)算法 颜色和边缘的方向性描述符

    颜色和边缘的方向性描述符(Color and Edge Directivity Descriptor,CEDD) 本文节选自论文<Android手机上图像分类技术的研究>. CEDD具有抽 ...

  3. Unbutu下装oracle

    Ubuntu 16.04安装Oracle 11gR2入门教程图文详解 转自         https://www.linuxidc.com/Linux/2017-12/149797.htm  原文作 ...

  4. python isdigit()函数

    isdigit() 函数是作用于字符串的,用来判断字符串是否全部由数字组成. x = '123456' y = 'iloveyou123' print(x.isdigit(),y.isdigit()) ...

  5. 06.swoole学习笔记--异步tcp服务器

    <?php //创建tcp服务器 $host='0.0.0.0'; $port=; $serv=new swoole_server($host,$port); //设置异步进程工作数 $serv ...

  6. 005、Java中使用文档注释

    01. 代码如下: package TIANPAN; /** * 此处为文档注释 * @author 田攀 微信382477247 */ public class TestDemo { public ...

  7. eclipse、idea中自动生成元模型JPA元模型对象

    一.eclipse 1.首先准备好两个jar包hibernate-jpa-2.0-api-1.0.1.Final和hibernate-jpamodelgen-4.3.5.Final 2.选中项目右击 ...

  8. 解决datagridview 横向的scrollbar不显示

    下午遇到这个问题.看到了网上各种解决办法.都没搞定. 新建了一个datagridview.发现是没问题了.仔细对比了一下它们的属性. 在Columns的属性中,有一项:Frozen, 把这个值改顺默认 ...

  9. golang 读取 chrome保存的网站账号信息

    package main import ( "database/sql" "fmt" "log" "os" " ...

  10. CSS屏幕适配尺寸样式

    /* 大屏幕 :大于等于1200px*/@media (min-width: 1200px) { ... } /*默认*/@media (min-width: 980px){...} /* 平板电脑和 ...