什么是面向对象三要素
在面向对象编程中,有三个比较重要的概念,分别是
- 继承,子类继承父类
- 封装,数据的权限和保密(前端应用较少)
- 多态,统一接口的不同实现(前端应用较少)
因为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
的属性和方法,还要有自己的属性和方法,这时候我们就用到了继承,上面代码的意思是,我们有一个“人”的类,其中包括一些人的通用属性和方法,但是人又分许多种,比如“学生”类,我们既有人的特性,又有他自己的特性。通过运行上面的代码,得到这样的结果
可以看到,继承过People类的Student类new 出来的实例,不但具有People类的特性又具有自己的特性,这就是继承,其中
extends
是ES6的一个继承关键字。如果你已经听上面的理论已经听腻了,我建议你手敲一下上面的代码,感受一下来自JS ES6的继承。
写在后面
本节我们对JS面向对象中的三要素之继承做了简单的讲解和代码演示,整体内容比较简单,如果你的基础比较薄弱,还是要跟着我的代码走一遍哦。我们会循序渐进,加大难度,现在打好基础,后面我们将设计模式,将更加的轻松。
网友评论