Typescript抽象属性

问题描述 投票:0回答:1

我几天前开始学习打字稿。我了解所有主要的OOP概念,但我只是不了解抽象属性背后的概念。我知道您必须重写/实现子类中基类的抽象成员。但是,它的用途是什么?我得到抽象方法背后的概念,但事实并非如此。如果您能为我提供一些很好的例子,我将不胜感激。

谢谢!

typescript oop abstract
1个回答
1
投票

摘要属性之所以有用,与摘要方法的类似原因有关;只读属性在概念上与吸气方法类似,因此抽象只读属性有点像具有抽象吸气方法。

[例如,假设您有一个用于表示表达式的树结构:您可能有一个二进制表达式的抽象类,并且为了避免重复,toString方法可能要使用this.op字符串属性作为在字符串表示中使用的适当符号(例如'+')。下面的代码显示了可能的层次结构中的两个类:

abstract class MyBinaryExpr extends MyExpr {
    constructor(readonly left: MyExpr, readonly right: MyExpr) { super(); }

    abstract readonly op: string;
    toString(): string {
        return '(' + this.left + this.op + this.right + ')';
    }
}

class MyAdd extends MyBinaryExpr {
    op = '+';
    compute(): number {
        return this.left.compute() + this.right.compute();
    }
}

如果相同的代码是用Java之类的语言编写的,而属性不能是抽象的,则MyBinaryExpr类可能出于相同的目的而具有类似abstract String getOp()的方法。

© www.soinside.com 2019 - 2024. All rights reserved.