继承

163 阅读1分钟

举People类拥有的属性和方法Student类都有,Student类还扩展了一些属性和方法

Student"是一种" People,两类之间是"is a kind of"关系。

这就是继承关系:Student类继承自People类

继承

继承描述了两个类之间的"is a kind of"关系,比如学生“是一种”人,所以人类和学生类之间就构成了继承关系

People是“父类” (或“超类”、“基类”);Student是“子类”(或“派生类”)

子类丰富了父类,让类描述得更具体。更细化

JavaScript中如何实现继承

实现继承的关键在于:子类拥有父类的全部属性和方法,同时子类还应该定义自己特有的属性和方法

使用JavaScript特有的原型链特性来实现继承,是普遍的做法

在ES6中回学习新的继承方法

image.png

关键语句,实现继承

将Student.prototype指向people实例

Student.prototype = new People();

 <script>
        // 父类,人类
        function People(name,age,sex){
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
        People.prototype.sayHello = function(){
            console.log('我是' + this.name + ',我' +this.age + '岁了');
        }
        People.prototype.sleep = function(){
            console.log(this.name + '在睡觉,zzzzzzz');
        }
        // 子类,学生类
        function Student(name,age,sex,school,studentNumber){
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.school = school;
            this.studentNumber = studentNumber;
        }

        // 关键语句,实现继承
        Student.prototype = new People();

        Student.prototype.study = function(){
            console.log(this.name + '正在学习');

        }
        Student.prototype.exam = function(){
            console.log(this.name + '正在考试,加油!');
        }
        // 方法重写、复写 (override) 父类的sayHello
        Student.prototype.sayHello = function(){
            console.log('敬礼!我是' + this.name + ',我' +this.age + '岁了');
        }
        // 实例化
        var hanmeimei = new Student('韩梅梅',9,'女','慕课小学',100000);

        hanmeimei.study();
        hanmeimei.sayHello();
        hanmeimei.sleep();

        // 人类 实例化
        var laowang = new People('老王',66,'男');

        laowang.sayHello();
        // laowang.study(); 报错
    </script>