情况(在打字稿中):
class BaseClass{
List obj = new List();
public Todo(){
obj.Add("1");
obj.Add("2");
obj.Add("3");
}
}
class ChildClass1 extends BaseClass{
public Todo(){
obj.Add("4");
obj.Add("5");
obj.Add("6");
}
}
class ChildClass2 extends BaseClass{
public Todo(){
obj.Add("7");
obj.Add("8");
obj.Add("9");
}
}
ChildClass1 child1 = new ChildClass1();
ChildClass2 child2 = new ChildClass2();
child1.Todo();
Child2.Todo();
问题是:当我调用子类方法Todo时,我希望通过一次调用该方法从BaseClass以及从ChildClass中添加的所有列表项,该怎么做?什么是最好的方法?
我可以想到的一种解决方案是:在子类的子类重写方法中,在子类方法本身中添加base.Todo(),如下所示。
class ChildClass {
public override Todo(){
base.Todo();
obj.Add("7");
obj.Add("8");
obj.Add("9");
}
}
这是Typescript或其他方式的最佳选择吗?
请注意,TypeScript不是JAVA。上面的语法并不完全适用。例如,您始终只有一个匿名构造函数。这是您问题的完整解决方案。
class BaseClass{
public obj = [];
constructor() {
this.obj.push('1');
this.obj.push('2');
this.obj.push('3');
}
public todo(): Array<string>{
return this.obj;
}
}
class ChildClass1 extends BaseClass{
constructor() {
super();
this.obj.push('4');
this.obj.push('5');
this.obj.push('6');
}
public todo(): Array<string>{
return this.obj;
}
}
class ChildClass2 extends BaseClass{
constructor() {
super();
this.obj.push('7');
this.obj.push('8');
this.obj.push('9');
}
public todo(): Array<string>{
return this.obj;
}
}
class Test {
private child1 = new ChildClass1();
private child2 = new ChildClass2();
constructor() {
console.log('child1: ', this.child1.todo());
console.log('child2: ', this.child2.todo());
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句