8、继承
- 可以通过extends关键来完成继承
时,就相当于将另一个类中的代码复制到了当前类中(简单理解) - 继承发生时,被继承的类称为 父类(超类),继承的类称为 子类
的代码,并且可以在不修改一个类的前提对其进行扩展
封装 —— 安全性
继承 —— 扩展性
多态 —— 灵活性
<script>
class Animal{
constructor(name){
this.name = name;
}
sayHello(){
console.log('动物在叫')
}
}
class Dog extends Animal{
}
class Cat extends Animal{
}
class Snake extends Animal{
}
const dog = new Dog('旺财')
const cat = new Cat('汤姆')
dog.sayHello()
cat.sayHello()
console.log(dog)
console.log(cat)
</script>
方法重写
- 通过继承可以在不修改一个类的情况下对其进行扩展
OCP 开闭原则
- 程序应该对修改关闭,对扩展开放
<script>
class Animal{
constructor(name){
this.name = name
}
sayHello(){
console.log("动物在叫~")
}
}
class Dog extends Animal{
// 在子类中,可以通过创建同名方法来重写父类的方法
sayHello(){
console.log("汪汪汪")
}
}
class Cat extends Animal{
// 重写构造函数
constructor(name, age){
// 重写构造函数时,构造函数的第一行代码必须为super()
super(name) // 调用父类的构造函数
this.age = age
}
sayHello(){
// 调用一下父类的sayHello
super.sayHello() // 在方法中可以使用super来引用父类的方法
console.log("喵喵喵")
}
}
const dog = new Dog("旺财")
const cat = new Cat("汤姆", 3)
dog.sayHello()
cat.sayHello()
console.log(dog)
console.log(cat)
</script>