面向对象:
三大特性:封装、继承、多态
优点:易维护、复用、扩展,由于面向对象有封装、继承、多态的特性,可设计出低耦合的系统使系统更加灵活更易于维护
缺点:性能比面向过程低
面向过程:
优点:性能比面向对象高,适合与硬件联系紧密的东西例如单片机采用面向过程编程
缺点:没有面向对象易维护、复用、扩展
类抽象了对象的公共部分,泛指某一大类(class),对象则特指某一具体的事物,通过类实例化一个具体的对象
类必须使用new关键字实例化。在ES6中类不存在变量提升,所以必须先定义类,才能通过类实例化对象。
类里面共有的属性和方法一定要加this使用!
class name{
//class body
}
//创建实例
var xx = new name();
class Star{
constuctor(name,age){
this.name = name ;
this.age = age ;
}
//类中添加方法
sing(song){
console.log(this.name + song);
}
}
var lyf = new Star('liuyifei',16);
var lhc = new Star('liuhaocun',18);
console.log(lyf);
console.log(lhc);
lyf.sing('我和我的祖国');
//类的继承
class Starson extends Star{
}
var son = new Starson.money()();
son.sing('小白船');//son 小白船
(1)通过class关键字创建类,类名习惯性定义首字母大写
(2)类里面有个constructor函数,可以接受传递过来的参数,同时返回实例对象
(3) constructor 函数只要new生成实例时,就会自动调用这个函数,如果我们不写这个函数,类也会自动生成这个函数
(4) 生成实例的new关键字不能省略
(5) 注意语法规范,创建类的时候类名后面不要加小括号,生成实例类名后面加小括号,构造函数不需要加function!
super关键字用于访问和调用对象父类的函数。可以调用父类的构造函数和普通函数(不用super关键字的时候遵循就近原则)
super关键字必须在子类的this之前调用!即必须先用父类的构造方法,再使用子类的构造方法!
记忆:百善孝为先——>父亲放首位!