美文网首页
javaScript面向对象三要素之继承

javaScript面向对象三要素之继承

作者: 喜剧之王爱创作 | 来源:发表于2020-10-16 10:55 被阅读0次

    什么是面向对象三要素

    在面向对象编程中,有三个比较重要的概念,分别是

    • 继承,子类继承父类
    • 封装,数据的权限和保密(前端应用较少)
    • 多态,统一接口的不同实现(前端应用较少)

    因为JS是一门弱类型语言,有一些概念是无法实现的,比如封装和多态,由于JS语法的限制, 我们在实际的开发中,应用很少,在上面三个重要概念中,应用最多的还是继承,这篇文章,我们将讲解一下继承的概念,在后面的文章中,也会通过一些例子去演示一下封装和多态,让大家有个了解。

    继承

    继承的概念大家应该不会太陌生,无论是平时的开发中(如react中的class组件创建)还是在一些面试中,都比较常见,例子也比较多,继承的本质是,一个类,去继承另外一个类,我们之前说到过,类其实就是一个模板,用来生产对象的模板,那么继承就是相当于,一个模板去复制另外一个模板的特性,然后加入自己的特性的这么一个过程。我们来看一下下面一个常见的例子

    // 父类
    class People {
        constructor (name, age) {
            this.name = name
            this.age = age
        }
    
        eat () {
            alert(`${this.name} eat somthing`)
        }
        spark () {
            alert(`My name is ${this.name}, age ${this.age}`)
        }
    }
    
    // 子类继承父类
    class Student extends People {
        constructor (name, age, number) {
            super(name, age)
            this.number = number
        }
        study () {
            alert(`${this.name} study`)
        }
    }
    
    const Lee = new Student('lee', 21, 50)
    console.log(Lee)
    

    上面的代码中,People是一个类,一个模板,其中包括了一些属性和方法,但其属性和方法比较有限,我们想要再创建一个类,这个类不仅需要有People的属性和方法,还要有自己的属性和方法,这时候我们就用到了继承,上面代码的意思是,我们有一个“人”的类,其中包括一些人的通用属性和方法,但是人又分许多种,比如“学生”类,我们既有人的特性,又有他自己的特性。通过运行上面的代码,得到这样的结果

    微信图片_20201016102458.png
    可以看到,继承过People类的Student类new 出来的实例,不但具有People类的特性又具有自己的特性,这就是继承,其中extends是ES6的一个继承关键字。如果你已经听上面的理论已经听腻了,我建议你手敲一下上面的代码,感受一下来自JS ES6的继承。

    写在后面

    本节我们对JS面向对象中的三要素之继承做了简单的讲解和代码演示,整体内容比较简单,如果你的基础比较薄弱,还是要跟着我的代码走一遍哦。我们会循序渐进,加大难度,现在打好基础,后面我们将设计模式,将更加的轻松。

    相关文章

      网友评论

          本文标题:javaScript面向对象三要素之继承

          本文链接:https://www.haomeiwen.com/subject/rotzpktx.html