ES6中的继承

ES6中的class可以看作是一个语法糖,他的绝大部分功能,ES5都 可以做到,新的class写法只是让对象原型的写法更加的清晰,更加的面向对象编程的语法而已

ES5继承:

      基本思想:利用原型链糖一个引用类型继承另一个引用类型的属性和方法(即通过prototype和构造函数实现)

    实质:

      将父类添加到prototype原型对象上;

    ES6继承:

      基本思想:通过exttends关键字实现继承,资料类可以继承父类中所有的方法和属性,子类必须在constructor方法中调用super方法,因为新建的子类没有自己的this对象,而是继承了父类的this对象;

    实质:

      利用extends关键字继承父类,然后继承父类的属性和方法

 使用:

      1.解决了代码的复用性;

      2.使用extends关键字实现继承

      3.子类可以继承父类中所有的方法和属性;

      4.子类只能继承一个父类(单继承),一个父类可以有多个子类

      5.子类的构造方法中必须有super()来指定调用父类的构造方法,并且位于子类构造方法中的第一行,

      6.子类中如果与父类相同的方法和属性,将会优先使用子类的(覆盖)

class People {
      //父类的构造方法
      constructor(type) {
        this.tyep = type;
      }
      //构造函数上的原型方法
      sleep() {
        console.log("每天睡一觉");
      }
    }
    //Class通过 extends 关键字实现继承。
    //Teacher 继承People父构造函数
    class Teacher extends People {
      constructor(name, age) {
        //调用父类的构造器,必须存在,且位于子类构造器第一行的位置
        super("人民教师")
        this.name = name;
        this.age = age;
      }
      eat() {
        console.log("学习使我快乐");
      }
    }
    let a = new Teacher("张三", 20);
    //可以实例对象访问到原型对象上的type;
    console.log(a);
    console.log(a.name);
    a.sleep()

上一篇:面向对象--继承--继承的概述


下一篇:继承