面向对象更贴近我们的实际生活,可以使用面向对象描述现实世界事物,事物又分为具体的事物和抽象的事物,比如手机是泛指的,抽象的,因为有苹果手机,安卓手机等等。但如果你现在有一部手机,那么这个手机又是具体的,特指的
那么我们该怎么用面向对象把手机表示出来呢?
面向对象的思维特点
1.抽取对象公共的属性和行为组织封装成一个类(模板),比如手机可以拨打电话,发送信息等功能,我们就把这些功能抽取出来
2.对类进行实例化,获取类的对象,比如我们把手机上的功能放在了模板上以后,我们就能组装成手机,这个手机就成了我们说的对象
以上,面向对象编程我们考虑的是有哪些对象,按照面向对象的思维特点不断的创建对象,使用对象指挥对象做事情
对象
现实生活中,万物皆对象,对象是一个具体的事物,看得见摸得着的实物。列如,一本书,一辆汽车,一个人,可以是对象,一个数据库,一张网页,一个与远程服务器的链接也可以是“对象”
在javaScript中,对象是一组无序的相关属性和方法的集合,列如字符串,数值,数组,函数等
对象是由属性和方法组成的
属性:事物的特征,在对象中用属性来表示特征,比如手机的颜色,屏幕大小,这些在对象中就用属性来表示
方法:事物的行为,在对象中用方法来表示,比如手机可以打电话,发短信
类 class
在ES6中新增加了类的概念,可以使用class关键字声明一个类,之后以这个类来实例化对象
类抽象了对象的公共部分,它泛指某一大类(class)
对象特指某一个,通过类实例化一个具体的对象
比如说:我们想要生产一辆宝马,我们画出宝马的模型图,我们知道宝马在哪里放方向盘,反光镜,车胎,那么这个模型图就是我们抽象出来的某一大类,有了这个类,我们就可以根据类,生产出一辆又一辆的宝马出来,那么生产出来的宝马,就是我们的对象
小结:
类抽象了对象的公共部分,它泛指某一大类(class)
对象特指某一个,通过实例化一个具体的对象
ES6中的类和对象
创建类
语法:
class name {}
创建实例:
var xx = new name();
注意:类必须使用new实例化对象
类 constructor 构造函数
constructor ()方法是类的构造函数(默认方法),用于传递参数返回实例对象,通过new命令生成对象实例时,自动调用该方法,如果没有显示定义,类内部会自动给我们创建一个constructor()
图解流程:
创建一个明星类Star,然后实例化Star,一但实例化以后,就会主动调用constructor,如果实例化的变量有传值,就会将值传递给constructor,在constructor ()里面处理逻辑
小结:
(1)通过class关键字创建类,类名我们还是习惯性定义首字母大写
(2)类里面有个constructor 函数,可以接收传递过来的参数,同时返回实例对象
(3)constructor 函数只要new生成实例,就会自动调用这个函数,如果我们不写这个函数,类也会自动生成这个函数
(4)最后注意语法规范,创造类 类名后面不要加小括号,生成实例 类名后面加小括号,构造函数不需要加function
类的继承
现实中的继承:子承父业,比如我们都继承父亲的姓
程序中的继承:子类可以继承父类的一些属性和方法
语法:
class Father{ //父类
}
class Son extends Father{ //子类继承父类
}
super 关键字
super 关键字
super 关键字用于返问和调用对象父类上得 函数,可以调用父类的构造函数,也可以调用父类的普通函数
1,继承中,如果实例化子类输出一个方法,先看看子类有没有这个方法,如果有就执行子类的
2,继承中,如果子类里面没有,就去查找父类有没有这个方法,如果有,就执行父类的这个方法(就近原则)