从子类增强基类方法的最佳方法是什么

用户名

情况(在打字稿中):

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或其他方式的最佳选择吗?

山猫242

请注意,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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章