介绍
父类型的引用指向了子类型的对象,不同类型的对象针对相同的方法,产生了不同的行为。
(() => {
// 定义一个父类
class Animal {
// 定义一个构造函数
constructor(name) {
// 更新属性值
this.name = name;
}
// 实例方法
run(distance) {
console.log(`跑了${distance}米这么远的距离`, this.name);
}
}
// 定义一个子类
class Dog extends Animal {
// 构造函数
constructor(name) {
// 调用父类的构造函数,实现子类中属性的初始化操作
super(name);
}
// 实例方法,重写父类中的实例方法
run(distance = 5) {
console.log(`跑了${distance}米这么远的距离`, this.name);
}
}
// 定义一个子类
class Cat extends Animal {
// 构造函数
constructor(name) {
// 调用父类的构造函数,实现子类中属性的初始化操作
super(name);
}
// 实例方法,重写父类中的实例方法
run(distance = 10) {
console.log(`跑了${distance}米这么远的距离`, this.name);
}
}
// 实例化父类对象
const ani = new Animal('动物');
ani.run(6);
// 实例化子类对象
const dog = new Dog('狗');
dog.run();
const cat = new Cat('猫');
cat.run();
// 父类和子类的关系:父子关系,此时,父类类型创建子类的对象
const dog1 = new Dog('小黄');
dog1.run(5);
const cat1 = new Animal('小猫');
cat1.run(7);
})();