TS的继承与多态、重写
class Animal{
name:string;
age:number;
constructor(name:string,age:number) {
this.name = name;
this.age = age;
}
bark() {
console.log("叫声");
}
}
class Dog extends Animal{// 继承实现多态
bark() {//方法的重写
console.log("汪汪汪");
}
}
class Cat extends Animal{// 继承实现多态
bark() {//方法的重写
console.log("喵喵喵");
}
}
const dog = new Dog("小狗",4);
const cat = new Cat("小猫",2);
console.log(dog);
dog.bark();
console.log(cat);
cat.bark();
abstract抽象类
不能用来创建对象,专门用来被继承的类
abstract class Animals{
name:string;
age:number;
constructor(name:string,age:number) {
this.name = name;
this.age = age;
}
bark() {
console.log("叫声");
}
}
class Dogs extends Animals{
bark() {
console.log("汪汪汪");
}
}
const dogs = new Dogs("小狗",4);
console.log(dogs);
dogs.bark();
抽象方法
抽象方法只能定义在抽象类中,没有方法体
子类必须对抽象方法进行重写
abstract class Animals{
name:string;
age:number;
constructor(name:string,age:number) {
this.name = name;
this.age = age;
}
abstract bark():void;
}
class Dogs extends Animals{
bark() {
console.log("汪汪汪");
}
}
const dogs = new Dogs("小狗",4);
console.log(dogs);
dogs.bark();