【发布时间】:2017-04-17 07:44:48
【问题描述】:
如何在 TypeScript 中正确定义私有抽象方法?
这是一个简单的代码:
abstract class Fruit {
name: string;
constructor (name: string) {
this.name = name
}
abstract private hiFrase (): string;
}
class Apple extends Fruit {
isCitrus: boolean;
constructor(name: string, isCitrus: boolean) {
super(name);
this.isCitrus = isCitrus;
}
private hiFrase(): string {
return "Hi! I\'m an aplle and my name is " + this.name + " and I'm " + (isCitrus ? "" : " not ") + "citrus";
}
public sayHi() {
alert(this.hiFrase())
}
}
此代码不起作用。如何解决?
【问题讨论】:
-
private== 只能在同一个类中访问。abstract== 未在此类中实现,而是在某些继承类中实现。这里有定义冲突。 -
你想要
protected abstract,而不是private abstract。 -
+deceze,是不是意味着我必须在每个派生类中定义
hiFrase()方法(Pear、Orange等)? -
+series0ne,我希望它是一个私有方法,但如果我不能保护也是可以接受的决定。谢谢
标签: javascript typescript