覆盖方法时我的自定义代码应该在super(base)之前或之后

zac*_*ary 2 .net c# java oop

当覆盖方法时,我的自定义代码应该在超级(基本)调用父类之前或之后?

小智 14

这里有3种选择:

  • 如果要在代码之前执行基本行为,请先调用它.
  • 如果要在代码之后执行基本行为,请在之后调用它.
  • 如果要完全覆盖基本行为,请不要完全调用它.

检查API的文档也很重要.某些类具有不能通过代码强制执行的子类合同,但如果您不遵守其规则,则可能会破坏行为.在某些情况下,需要子类来调用超级实现.

  • 第四个选择:在两者之间调用它。有时你需要先做一些初始化(例如创建一个包装器或缓冲区或其他东西)并在基调用之后处理结果。 (2认同)