1、面向过程:核心是解决问题的过程
2、面向对象:核心是对象。关注每个对象在解决问题中的行为
(1)封装性:对象是属性(静态特征)和行为(动态特征)的结合体(封装体)
(2)继承性:父类(基类)的属性和行为可以派生到子类中。子类不需要重复定义
(3)多态性:同一个消息传递给不同的对象,得到的结果不同。
3、类:具体相同属性和行为的对象的抽象
4、对象:是类的实例(是类的具体体现)
5、ES5中定义类:通过构造函数实现
function Student(name,age){ //构造函数,建议首字母大写,Student可以看作类
this.name = name;
this.age = age;
}
var s1 = new Student('刘备',32); //s1就是对象
var s2 = new Student('小乔',18);
6、ES6中定义类的方法:
class 类名{
constructor([参数]){ //构造方法:用来初始化对象的成员
方法体;
}
}
(1)创建对象:
var 对象名 = new 类名([参数])
强调:在ES6中constructor构造方法不能显式调用
例如:
class Student{ //使用class关键字定义类
constructor(na,a){ //构造方法:用来初始化对象的成员
this.name = na;
this.age = a;
}
}
‘this.name’中的name是对象的属性
(2)对象成员(包括属性和方法)的访问
对象名.属性名
对象名.方法名([参数])
7、继承:
(1)父类:又称为基类或超类,被继承的类
(2)子类:又称为派生类。由父类派生来的类
(3)继承的实现:extends
class 子类名 extends 父类名{
constructor(){
}
其他的成员方法
}
(4)super关键字:代表父类.用来访问和调用父类的成员
A、调用父类的构造方法:在子类的构造方法中调用父类的构造方法
在继承中,创建子类对象时必须先调用父类的构造方法,然后再调用
子类的构造方法,并且父类构造方法的调用必须是子类构造方法中
第一条语句.
B、super([参数]):调用父类的构造方法
C、调用父类的普通方法:super.方法名([参数])
8、实例成员和静态成员
(1)实例成员:对象成员
(2)静态成员:所有对象共享的成员,不属于某个具体的对象。
又称为类成员
类名.成员名 -- ES6
构造方法名.成员名 -- ES5