2

es6的classes

  • 构造方法:

class Student{
    constructor (name,age){
        this.name=name;
        this.age=age;
    }
    run(){
        console.log("我会跑");
    }
}
    let xs = new Student("宋泽",25);
    console.log(xs);//打印:Student {name: "宋泽", age: 25}。
    //constructor:实例化那些默认属性。
  • 继承:

class Teacher extends Student{
    constructor (name,age,sex){
        super(name,age);
        this.sex=sex;
    }
    eat(){
        console.log(this.name+"is eating")
    }
}
    var ls = new Teacher("老师","30","男");
    console.log(ls);//打印:Teacher {name: "老师", age: "30", sex: "男"}。
    ls.eat();//打印:老师is eating。
    //extends:继承。
    //super:继承属性方法。
    注释:在构造方法里的super是指反类的构造方法。
  • get,set,static:

class Student{
    constructor (name,age){
        this.name=name;
        this.age=age;
    }
    run(){
        console.log("我会跑");
    }
    get xm(){
        return this.name+"123";
    }
    set xm(value){
        this.name=value;
    }
    static shangxue (){
        console.log("去读书");
    }
}
    let xs = new Student("宋泽",25);
    console.log(xs.xm);
    xs.xm="大胖";
    console.log(xs.xm);
    Student.shangxue();
    //get:获取加赋值。
    //set:设置。
    //static:静态方法|类方法。
    //set和get的方法名相同,而且可以同名
  • 方法重载|方法覆盖:

class Student{
    constructor (name,age){
        this.name=name;
        this.age=age;
    }
    run(){
        console.log("我会跑");
    }
}
    let xs = new Student("宋泽",25);
            
    class Teacher extends Student{
        constructor (name,age,sex){
            super(name,age);
            this.sex=sex;
        }
        eat(){
            console.log(this.name+"is eating")
        }
        run(){
            super.run();
            console.log("我一直在跑");
        }
    }
    var ls = new Teacher("老师","30","男");
    ls.run();//我会跑 我一直在跑;
    注释:虽然子类继承了父类的run方法,但是子类会把父类的方法给覆盖掉,这个就是方法覆盖。

songze
211 声望13 粉丝

该来的总会来,该走的不挽留!