抽象类

# 抽象类

当我们发现,代码中有很多公共代码出现或者频繁的继承同一个类,并且这个类不参与代码的创建,没有实际的含义时。我们可以将其抽离为一个公共类。

使用 abstract 将类指定为抽象类

同时,抽象类中允许存在抽象成员。

abstract class Human {
    name: string = "";
    age: number = 0;

    move(x: number, y: number) {
        console.log("判断边界值是否出界");
        console.log("判断是否存在障碍物无法跨越");
        if (this.rule(x, y)) {
            console.log("移动成功");
        }
    }

    protected abstract rule(x: number, y: number): boolean;
}


class Man extends Human {
    name: string = "Tom";
    age: number = 1;

    protected rule(x: number, y: number): boolean {
        return true;
    }
}

class Woman extends Human {
    name: string = "Alisa";
    age: number = 1;

    protected rule(x: number, y: number): boolean {
        return false
    }
}


let m: Human = new Man()

m.move(1,1)