面向对象编程的介绍
两大编程思想
1.面向过程:分析好步骤,按步骤解决需求
2.面向对象:把需求分割成对象,然后由对象之间分工合作 OOP(Object Orientted Programming)
3.两种编程方式的优缺点对比:
面向过程:性能更高,联系更加紧密,但是不利于维护,复用和扩展
面向对象:易于维护,易复用,易扩展,是系统更加灵活,但是性能比面向过程低
面向对象的优点
面向对象编程具有灵活,代码可复用,容易维护和开发的优点,更适合多人合作的大型软件项目
面向对象的特点
封装:
简单的说函数的封装,将一个功能封装起来,便于代码的复用
也可以将多个函数和属性,整体封装起来形成一个具体的对象
继承:
让一个不具有某些特征的对象,具有另一个对象的特征
继承中,如果实例化子类输出一个方法,先看子类有没有这个方法,如果有就先执行子类
继承中,如果子类没有,就去查找父类有没有这个方法,如果有,就执行(就近原则)
多态
多种形态,一个功能的不同的应用场景
应用场景,创建场景
ES6中的类和对象
1.创建类
class name { // class body }
2.创建实例
var xx = new name(); //类必须使用new实例化对象
3.类construtor构造函数
class Strat { constructor(name,age){ this.name = name; this.age = age; } } var ldh = new start("刘德华",18); console.log(ldh); //Strat{"刘德华",18}
注意事项:
① 通过class关键字创建类,类名习惯定义首字母大写
② 类里面的constructor函数,可以接受传递过来的参数,同时返回给实例对象(不需要返回值)
③ constructor函数 只要new生成实例时,就会自动调用这个函数 即,如果我们不写这个函数,类也会自动生成这个函数(不需要主动调用
④ 生成实例的new不能够省略
5.类中的方法
class Strat { constructor(name,age){ this.name = name; this.age = age; } say() { console.log(this.name + "你好"); } }
注意事项:
①方法不需要书写function关键字
②方法与方法之间不需要逗号分隔
6.super关键字
概念:super关键字用于访问和调用对象父类上的函数.可以调用父类的构造函数,也可以调用父类的普通函数
class Father { say() { return "我是爸爸"; } } class Son extends Father{ say(){ console.log(super.say() + "的儿子"); //使用super调用父级函数 } } var son = new Son (); son.say(); //我是爸爸的儿子