我几天前开始学习打字稿。我了解所有主要的OOP概念,但我只是不了解抽象属性背后的概念。我知道您必须重写/实现子类中基类的抽象成员。但是,它的用途是什么?我得到抽象方法背后的概念,但事实并非如此。如果您能为我提供一些很好的例子,我将不胜感激。
谢谢!
摘要属性之所以有用,与摘要方法的类似原因有关;只读属性在概念上与吸气方法类似,因此抽象只读属性有点像具有抽象吸气方法。
[例如,假设您有一个用于表示表达式的树结构:您可能有一个二进制表达式的抽象类,并且为了避免重复,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()
的方法。