类的继承

类的继承

  1. 定义: 使用extendssuper关键字实现继承
    class Person {
      constructor(name, age) {
        this.name = name
        this.age = age
      }
      eating(params) {
        console.log(this.name + '吃了' + params)
      }
      drinking(water){
        return water + this.name
      }
    }
    /* 使用extends关键字使子类继承父类 */
    class Student extends Person {
      constructor(name, age, book) {
        /* 在子类构造函数中,先调用super构造函数,主要用来调用父类的构造函数,传入对应的参数 */
        super(name, age)
        this.book = book
        /* 同时也可以通过super调用父类中的方法(包括静态方法) */
        this.water = super.drinking(water)     
       }
      read() {
        console.log(this.book)
      }
    }
    
    let stu1 = new Student('nano', 19, 'vue权威指南')
    stu1.eating('饭') --> nano吃了饭
    stu1.read()    -->权威指南  

    子类对父类方法的重写

  2. 定义: 在子类中写一个与父类同名的方法,会优先调用子类中的方法
    class Person {
      constructor(name) {
        this.name = name
      }
      eating(params) {
        console.log(this.name + '吃了' + params)
      }
    }
    /* 使用extends关键字使子类继承父类 */
    class Student extends Person {
      constructor(name) {
      /* 在子类构造函数中,先调用super构造函数,主要用来调用父类的构造函数,传入对应的参数 */
      super(name)
    }
      /* 写一个与父类同名的方法eating,进行方法的重写 */
      eating(params) {
        /* 同时可以通过super复用父类中的方法逻辑 */
        super.eating('饭')
        console.log('子类吃吃吃!'+params )
      }
    }
    
    let stu1 = new Student('nano')
    
    stu1.eating('饭') --> nano吃了饭 子类吃吃吃!饭

继承内置类

class NanoArray extends Array {
  firstItem() {
    return this[0]
  }
}
let arr = new NanoArray(1, 2, 3)
console.log(arr.firstItem())  --> 1

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!